WA了一下午。。。。

1WA:T了,因为阶乘没打表所以时间超了。。

2WA,3WA:runtime error,检查的value数组开小了,应该是MAXN。。

4WA、5WA、6WA:改了改对cnt的处理,该加Mod的加Mod

7WA:complication error,调试函数忘了删。。

8WA:所有的int改成了long long

9WA、10WA:改了下最后的思路和对于 m = 1 的处理

11WA:加了两个*1LL

12WA、13WA:发现输入有问题,中间有-1的时候会跳出

14WA:n打成了m

15: AC

整体思路就是只要保持1 - n的每一条路是单射,只需要保证首和尾的数相同即可,不需要考虑中间过程,

特殊情况就是没有-1的时候,需要判断能不能够满足条件。

 #include<stdio.h>
 #include<cstring>
 #include<set>
 typedef long long LL;
 using namespace std;
 ;
 ;
 long long ans;
 int n, m;
 int cnt;
 int a[MAXN][MAXN];
 long long jc[MAXN];
 int flag;
 set<int>s;
 void init(){
     jc[] = ;
     ; i < MAXN; ++i){
         jc[i] = ((jc[i-]*1LL) % MOD*i)%MOD;
     }
 }
 bool judge(){
     ;
     int tmp;
     int value[MAXN];
      ){
         ; i <= n; ++i){
             ][i] != i)
                 fflag = ;
         }
         return fflag;
     }
     else{
         memset(value,,sizeof(value));
         ; i <= n; ++i){
             tmp = a[m][i];
             ; j >= ; --j){
                 value[i] = a[j][tmp];
                 tmp = a[j][tmp];
             }
         }
         ; i <= n; ++i)
             if( value[i] != i )
                 fflag = ;

         return fflag;
     }
 }
 int main(){
     freopen("in.txt","r",stdin);
     init();
     while(~scanf("%d%d", &n, &m)){
         flag = ;
         memset(a,,sizeof(a));
         s.clear();
         ; i <= m; i++){
             ; j <= n; j++){
                 scanf("%d", &a[i][j]);
                 ] == -)
                     break;
                 )
                     flag = ;
                 s.insert(a[i][j]);
             }
             ] != -){
                 flag = ;
             }
             s.clear();
         }
          ){
             printf("0\n");
             continue;
         }
         ans = ;
         cnt = ;
         flag = ;
         ; i <= m; ++i){
             ] == - ){
                 cnt++;
                 flag = ;
             }
         }
         if(cnt){
             ; i < cnt; ++i){
                 ans =( ans *1LL* jc[n] )% MOD;
             }
         }
         if(flag)
             printf("%I64d\n",ans);
         else{
             if(judge())
                 printf("1\n");
             else
                 printf("0\n");
         }
     }
 }

hdoj 5399 Tpp simple的更多相关文章

  1. HDOJ 5399 Too Simple

    每个函数都必须是一个排列,经过连续的一段确定函数后数字不能少. 满足上面的条件的话,仅仅要有一个-1函数特别的排列一下就能够满足要求,剩下的能够任意填 没有-1的话特判 Too Simple Time ...

  2. 构造 HDOJ 5399 Too Simple

    题目传送门 题意:首先我是懂了的,然后我觉得很难讲清楚就懒得写了,关键理解f1(f2(fm(i)))=i,不懂的戳这里构造:如果fi(j)不是映射到(1~n),重复或者不在范围内的肯定无解.还有没有- ...

  3. 【HDOJ 5399】Too Simple

    pid=5399">[HDOJ 5399]Too Simple 函数映射问题 给出m函数 里面有0~m个函数未知(-1) 问要求最后1~n分别相应仍映射1~n 有几种函数写法(已给定的 ...

  4. HDOJ 4974 A simple water problem

    A simple water problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/O ...

  5. HDU 5399 Too Simple(过程中略微用了一下dfs)——多校练习9

    Too Simple Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Probl ...

  6. HDOJ 4975 A simple Gaussian elimination problem.

    和HDOJ4888是一样的问题,最大流推断多解 1.把ISAP卡的根本出不来结果,仅仅能把全为0或者全为满流的给特判掉...... 2.在残量网络中找大于2的圈要用一种类似tarjian的方法从汇点開 ...

  7. 【HDOJ】2451 Simple Addition Expression

    递推,但是要注意细节.题目的意思,就是求s(x) = i+(i+1)+(i+2),i<n.该表达中计算过程中CA恒为0(包括中间值)的情况.根据所求可推得.1-10: 31-100: 3*41- ...

  8. 【HDOJ】1341 Simple Computers

    注意PC要与31. #include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 40 ...

  9. 【HDOJ】1497 Simple Library Management System

    链表. #include <cstdio> #include <cstring> #include <cstdlib> #define MAXM 1001 #def ...

随机推荐

  1. S2sh整合MAven项目所需坐标大全

    <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> & ...

  2. 理解 Bias 与 Variance 之间的权衡

    有监督学习中,预测误差的来源主要有两部分,分别为 bias  与 variance,模型的性能取决于 bias 与 variance 的 tradeoff ,理解 bias 与 variance 有助 ...

  3. java UncaughtExceptionHandler 处理线程意外中止

    本文转自:http://peirenlei.iteye.com/blog/305079 Thread的run方法是不抛出任何检查型异常(checked exception)的,但是它自身却可能因为一个 ...

  4. Linux下ntpdate时间同步

    Linux下ntpdate时间同步 Ntp服务器配置(暂略,以后整理) 时间同步方法 同步命令               # ntpdate ntp服务器域名或IP           例:# nt ...

  5. C++ STL算法系列5---equal() , mismatch()

    equal和mismatch算法的功能是比较容器中的两个区间内的元素.这两个算法各有3个参数first1,last1和first2.如果对 于区间[first1,last1)内所有的first1+i, ...

  6. java 学习资料

    最近一直在从java基础开始学习java,感觉个人学习思路还是比较混乱的. 看到Java工程师成神之路中介绍了需要学习的知识点,并在<成神之路系列文章>中分章分节的开始介绍其中所有的知识点 ...

  7. loadrunner之C语言编程

    一.常量定义 #define COUNT 100            //定义全局常量#define SALARY 4000 Action(){    int total;    total = C ...

  8. LoadRunner学习记录--安装遇到的问题一

    安装过程中的出现了此计算机上缺少vc2005_sp1_with_atl_fix_redist 需要到这个目录下lrunner\En\prerequisites\vc2005_sp1_redist\ 手 ...

  9. cocos2d-x 全面总结--字体描边和制作阴影

    关于字体描边的实现,不考虑效果和效率的话,是有三种方式: ① 利用CCLabelTTF制作文字描边和阴影效果 ② 利用CCRenderTexture渲染文理的方式生成带有描边效果的文字 ③ 利用sha ...

  10. Oracle 热备份batch脚本 Windows

    1.最初来源于网络. 2.根据环境和喜好自己修改. 3.实测是可以完成备份任务的. 4.不推荐用于实际环境. bak.bat:执行时执行此脚本,其他脚本是调用和生成或者生成之后再调用.(需要自己修改先 ...