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的时候,需要判断能不能够满足条件。

  1. #include<stdio.h>
  2. #include<cstring>
  3. #include<set>
  4. typedef long long LL;
  5. using namespace std;
  6. ;
  7. ;
  8. long long ans;
  9. int n, m;
  10. int cnt;
  11. int a[MAXN][MAXN];
  12. long long jc[MAXN];
  13. int flag;
  14. set<int>s;
  15. void init(){
  16. jc[] = ;
  17. ; i < MAXN; ++i){
  18. jc[i] = ((jc[i-]*1LL) % MOD*i)%MOD;
  19. }
  20. }
  21. bool judge(){
  22. ;
  23. int tmp;
  24. int value[MAXN];
  25. ){
  26. ; i <= n; ++i){
  27. ][i] != i)
  28. fflag = ;
  29. }
  30. return fflag;
  31. }
  32. else{
  33. memset(value,,sizeof(value));
  34. ; i <= n; ++i){
  35. tmp = a[m][i];
  36. ; j >= ; --j){
  37. value[i] = a[j][tmp];
  38. tmp = a[j][tmp];
  39. }
  40. }
  41. ; i <= n; ++i)
  42. if( value[i] != i )
  43. fflag = ;
  44.  
  45. return fflag;
  46. }
  47. }
  48. int main(){
  49. freopen("in.txt","r",stdin);
  50. init();
  51. while(~scanf("%d%d", &n, &m)){
  52. flag = ;
  53. memset(a,,sizeof(a));
  54. s.clear();
  55. ; i <= m; i++){
  56. ; j <= n; j++){
  57. scanf("%d", &a[i][j]);
  58. ] == -)
  59. break;
  60. )
  61. flag = ;
  62. s.insert(a[i][j]);
  63. }
  64. ] != -){
  65. flag = ;
  66. }
  67. s.clear();
  68. }
  69. ){
  70. printf("0\n");
  71. continue;
  72. }
  73. ans = ;
  74. cnt = ;
  75. flag = ;
  76. ; i <= m; ++i){
  77. ] == - ){
  78. cnt++;
  79. flag = ;
  80. }
  81. }
  82. if(cnt){
  83. ; i < cnt; ++i){
  84. ans =( ans *1LL* jc[n] )% MOD;
  85. }
  86. }
  87. if(flag)
  88. printf("%I64d\n",ans);
  89. else{
  90. if(judge())
  91. printf("1\n");
  92. else
  93. printf("0\n");
  94. }
  95. }
  96. }

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. POJ2236 Wireless Network

    解题思路:简单并查集,注意时间限制是10000MS,每次进行O操作之后,   进行一次for循环,进行相关调整.同时注意输入输出格式,见代码: #include<cstdio> #incl ...

  2. 【英语】Bingo口语笔记(80) - 记忆、忘记的表达

  3. 安装rlwrap错误的问题解决方法

     You need the GNU readline library(ftp://ftp.gnu.org/gnu/readline/ ) to build this program.如果安装rlwra ...

  4. php 格式化数字 位数不足前面加0补足

    本文引用自 http://www.fengfly.com/plus/view-62827-1.html 补0: <?php $var = sprintf("%03d", 12 ...

  5. 对 HTTP 304 的理解

    最近和同事一起看Web的Cache问题,又进一步理解了 HTTP 中的 304 又有了一些了解. 304 的标准解释是: Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提 ...

  6. Linux进程调度策略

    linux内核的三种主要调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略(先到先服务)3,SCHED_RR实时调度策略(时间片轮转) 实时进程将得到优先调用 ...

  7. DzzOffice结合office web Apps私有部署的实例

    很多朋友都想在自己使用的DzzOffice中,调用本地部署的office web Apps server. 下面我就直接从头到尾的将部署全部过程分享给大家. 准备条件:两台服务器,配置稍高点,以免卡顿 ...

  8. 序列for循环语句

    序列for循环语句 序列for循环语句允许重复遍历一组序列,而这组序列可以是任何可以重复遍历的序列,如由begin()和end()函数定义的STL序列.所有的标准容器都可用作这种序列,同时它也同样可以 ...

  9. Python中的并发编程

    简介 我们将一个正在运行的程序称为进程.每个进程都有它自己的系统状态,包含内存状态.打开文件列表.追踪指令执行情况的程序指针以及一个保存局部变量的调用栈.通常情况下,一个进程依照一个单序列控制流顺序执 ...

  10. 数往知来 JavaScript<十三>

    一.javaScript 语法:大小写敏感,弱类型(所有类型都用var进行引导.声明) 写在<script></script>标签里  不可以放在title里 var num= ...