hdoj 5399 Tpp simple
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的更多相关文章
- HDOJ 5399 Too Simple
每个函数都必须是一个排列,经过连续的一段确定函数后数字不能少. 满足上面的条件的话,仅仅要有一个-1函数特别的排列一下就能够满足要求,剩下的能够任意填 没有-1的话特判 Too Simple Time ...
- 构造 HDOJ 5399 Too Simple
题目传送门 题意:首先我是懂了的,然后我觉得很难讲清楚就懒得写了,关键理解f1(f2(fm(i)))=i,不懂的戳这里构造:如果fi(j)不是映射到(1~n),重复或者不在范围内的肯定无解.还有没有- ...
- 【HDOJ 5399】Too Simple
pid=5399">[HDOJ 5399]Too Simple 函数映射问题 给出m函数 里面有0~m个函数未知(-1) 问要求最后1~n分别相应仍映射1~n 有几种函数写法(已给定的 ...
- HDOJ 4974 A simple water problem
A simple water problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ...
- HDU 5399 Too Simple(过程中略微用了一下dfs)——多校练习9
Too Simple Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Probl ...
- HDOJ 4975 A simple Gaussian elimination problem.
和HDOJ4888是一样的问题,最大流推断多解 1.把ISAP卡的根本出不来结果,仅仅能把全为0或者全为满流的给特判掉...... 2.在残量网络中找大于2的圈要用一种类似tarjian的方法从汇点開 ...
- 【HDOJ】2451 Simple Addition Expression
递推,但是要注意细节.题目的意思,就是求s(x) = i+(i+1)+(i+2),i<n.该表达中计算过程中CA恒为0(包括中间值)的情况.根据所求可推得.1-10: 31-100: 3*41- ...
- 【HDOJ】1341 Simple Computers
注意PC要与31. #include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 40 ...
- 【HDOJ】1497 Simple Library Management System
链表. #include <cstdio> #include <cstring> #include <cstdlib> #define MAXM 1001 #def ...
随机推荐
- Session随便写的(抄书笔记)
会话是web开发中常用的一种对象.会话是存在于服务器端的对象,因此会话超时是保证性能效率的必要手段,本章将学习几种常用的使会话失效的办法.大多数容器都使用cookie作为会话跟踪的基础,但是cooki ...
- AutoGenSystem
#coding=utf-8 # # AutoGenSystem # 声明: # 该软件主要是为了解决Android系统更新时,由于版本很多,管理起来复杂,容易出错,于是采用软件 # 自动对系统软件进行 ...
- WWDC 2015 - 概记
WWDC 2015已经过去快一个月了,今年似乎没有像去年那样变化巨大,一切都在慢慢演进,iOS.Mac OS.watchOS都变得越来越好. 新的三大平台的发布,iOS 9/Mac OS EL Cap ...
- fmri分析工具:spm里的统计学 Introduction to SPM statistics
引言 Introduction 需要特别说明,spm是每一个体素为单位,计算统计量,进行t检验. 1.分别在每个体素上做方差分析; 2.对每个体素的方差分析结果,计算t检验统计量; 3.计算等同于t ...
- ORACLE RAC集群硬件资源管理与单节点的区别
硬件资源是由OS kernel管理的,应用软件是不能直接访问硬件的,必须通过OS kernel提供的API接口间接访问,OS kernel 除了要完成用户的请求,还通过进程调度等机制来控制多进程对资源 ...
- Android按键事件传递流程(二)
5 应用层如何从Framework层接收按键事件 由3.2和4.5.4节可知,当InputDispatcher通过服务端管道向socket文件描述符发送消息后,epoll机制监听到了I/O事件, ...
- python-socket.error[10054]:对象的复制
1.socket.error[10054],对方强制关闭了连接 在用socket.recvfrom时,若事先没有bind时, 先使用socket.sendto,socket.recvfrom 有时会出 ...
- 解决 RaspberryPi 树莓派 NTP服务异常 无法自动同步时间
sudo nano /etc/ntp.conf 然后找到 # pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server ...
- DevExpress 14.2.3源码编译 z
一.准备 1.准备一台Windows 8.1机器,安装VS2013 2.准备一台Windows 8.1机器,安装VS2010 XP的系统肯定不行,因为有不少的运行库不支持 Windows ...
- devexpress datagrid 与imageEdit以及如何存图片到数据库 z
http://blog.csdn.net/haoyujie/article/details/41277703 首先建立了一个数据库的表,这个表中,有一个字段是image类型(SQL Server数据库 ...