首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
构造 HDOJ 5399 Too Simple
时间:
2015-08-19 11:06:58
阅读:
100
评论:
0
收藏:
0
[点我收藏+]
标签:
题目传送门
/*
题意:首先我是懂了的,然后我觉得很难讲清楚就懒得写了,关键理解f1(f2(fm(i)))=i,不懂的戳这里
构造:如果fi(j)不是一一映射到(1~n),重复或者不在范围内的肯定无解,还有没有-1的情况,模拟一下若不能满足f1(f2(fm(i)))=i
也是不行的。除此之外,那么有k个-1,那么方案数是(n!) ^ (k - 1),因为k-1个可以随便排列,最后一个由于之前的确定
*/
/************************************************
* Author :Running_Time
* Created Time :2015-8-18 16:01:25
* File Name :D.cpp
************************************************/
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <cstdlib>
#include <ctime>
using
namespace
std;
#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
typedef
long
long
ll;
const
int
MAXN = 1e2 + 10;
const
int
INF = 0x3f3f3f3f;
const
int
MOD = 1e9 + 7;
int
a[MAXN][MAXN];
bool
vis[MAXN];
ll f[MAXN];
int
main(
void
) {
//HDOJ 5399 Too Simple
int
n, m; f[1] = 1;
for
(
int
i=2; i<=100; ++i) f[i] = f[i-1] * i % MOD;
while
(scanf (
"%d%d"
, &n, &m) == 2) {
int
cnt = 0;
bool
flag =
true
;
for
(
int
i=1; i<=m; ++i) {
scanf (
"%d"
, &a[i][1]);
if
(a[i][1] == -1) {
cnt++;
continue
;
}
memset (vis,
false
,
sizeof
(vis));
vis[a[i][1]] =
true
;
for
(
int
j=2; j<=n; ++j) {
scanf (
"%d"
, &a[i][j]);
if
(vis[a[i][j]]) flag =
false
;
else
vis[a[i][j]] =
true
;
}
}
if
(cnt == 0) {
for
(
int
i=1; i<=n && flag; ++i) {
int
p = i;
for
(
int
j=m; j>=1; --j) p = a[j][p];
if
(p != i) flag =
false
;
}
}
if
(!flag) {
puts (
"0"
);
continue
;
}
ll ans = 1;
for
(
int
i=1; i<cnt; ++i) ans = ans * f[n] % MOD;
printf (
"%I64d\n"
, ans);
}
return
0;
}
构造 HDOJ 5399 Too Simple
标签:
原文地址:http://www.cnblogs.com/Running-Time/p/4741433.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!