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 ...
随机推荐
- GLSL学习_高斯滤波
使用RenderMonkey: 从自带的sobel修改的. vertex: uniform float height; varying vec4 vTexCoords00; varying vec4 ...
- wxWidgets简单的多线程
#include <wx/wx.h> #include <wx/thread.h> #include <wx/event.h> #include <wx/pr ...
- scala学习笔记(7):函数(1)
函数是Scala的第一公民! 1 基本定义 scala> def max(x: Int, y: Int): Int = { if (x > y) x else y } 跟着是括号里带有冒 ...
- Linux下ll命令与ls -l
还大三Linux课的债. 1.ll命令用于显示当前文件下非隐藏文件的详情 查询结果分为7栏: 1)如' -rw-r--r--' 表示三种用户对该文件的不同权限: r:可读:w:可写:x:可执行 其中第 ...
- android EditText控件可输入正负数及小数位
设置android:inputType="numberSigned|numberDecimal" <EditText android:id="@+id/editTe ...
- javascript正则表达式简介
javascript正则表达式 javascript正则表达式 regular expression是一个描述字符模式的对象: ECMAScript中的RegExp类表示正则表达式: String ...
- Java核心_内省
Java核心_内省 查看java的api,发现有一个包java.bean咦,这个包是干什么的呢,原来,它是用来操作JavaBean对象的! 一.内省操作①JavaBean:一种特殊的Java类无参构造 ...
- “内部类” 大总结(Java)
(本文整理自很久以前收集的资料(我只是做了排版修改),作者小明,链接地址没有找到,总之感谢,小明) (后面也对"静态内部类"专门做了补充) 内部类的位置: 内部类可以作用在方法里以 ...
- Hadoop-- MapReduce简单理解
1.Hadoop和MapReduce概念 Mapreduce是一种模式. Hadoop是一种框架. Hadoop是一个实现了mapreduce模式的开源的分布式并行编程框架. 2.Hadoop框架 ...
- java开发eclipse常见问题(一)The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
最近刚开始用Eclipse开发,刚开始都是按教程一步一步的新建web工程也没出现什么问题. 今天选了一个新的workspace,建了个web工程发现最简单的jsp页面都报错:The superclas ...