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 ...
随机推荐
- 修改Android系统字号(二)
/*********************************************************************** * 修改Android系统字号(二) * 说明: * ...
- 08day1
高中运动会 最大公约数 [问题描述] 梦幻城市每年为全市高中生兴办一次运动会.为促使各校同学之间的交流,采用特别的分队方式:每一个学校的同学,必须被均匀分散到各队,使得每一队中该校的人数皆相同.为增加 ...
- bootstrap-datepicker 插件修改为默认中文
bootstrap-datepicker 是一个非常优秀的时间选择插件,默认是英文显示日期的,通过下面几个小修改让其支持默认中文 1.首先将 bootstrap-datepicker.js 另存为 u ...
- Spring 框架概述
◆简介 目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 Spring 框架是一个分层架构,由 7 个定义良好的模块组成. ...
- C#隐式运行CMD命令(隐藏命令窗口)
原文 C#隐式运行CMD命令(隐藏命令窗口) 本文实现了C#隐式运行CMD命令的功能.下图是实例程序的主画面.在命令文本框输入DOS命令,点击"Run"按钮,在下面的文本框中输出运 ...
- Java并发编程-synchronized
多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题.同步机制可以使用synchronized关键字实现.synchronized关 ...
- Golang 绘图基础 -绘制简单图形
前一节讲的是 绘图到不同输出源,请看地址: http://www.cnblogs.com/ghj1976/p/3440856.html 上一节的例子效果是通过设置每一个点的的RGBA属性来实现的,这是 ...
- Mountain Road
题意: n个车,过一条路,有不同的方向,路上不允许同时有两个方向的车,给出每个车的起始时间,方向,和经过路花费的时间,车最小间隔10个时间,求最后一个车通过路的最早的时间. 分析: dp[i][j][ ...
- Quartz使用总结
废话的前言 以前凭借年轻,凡事都靠脑记.现在工作几年后发现,很多以前看过.用过的东西,再次拿起的时候总觉得记不牢靠."好记性不如烂笔头"应该是某位上了年纪的大叔的切肤之痛(仅次于上 ...
- Cocos2d-android (02) 添加一个精灵对象
什么是精灵: 1.精灵就是游戏当中的一个元素,通常用于代表画面当前中的一个事物,例如主人公,NPC和背景元素等: 2.一个精灵对象通常都与一张图片关联 3.精灵对象可以通过动作对象(CCAction) ...