2015多校第九场 HDU 5399 Too Simple
来源:互联网 发布:mac mini 发布 编辑:程序博客网 时间:2024/06/05 18:31
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5399
题意:求满足f1(f2(...(fm(i))...))=i的未知的函数有多少种可能。
解法:已经膜得如此明显了。。答案是(n!)^(m-1),m为-1的个数,因为m个不确定的函数,其中的m-1个固定了,那么还有一个也就固定了。每个不确定的都有n!种方案。
如果m为0,则有0种或者1种方案。也就是要看当前的一层一层能否推到f1(f2(...(fm(i))...))=i。要注意:当某个f里1..n没有全部出现时,即有重复数字时,答案是0。这个题要特殊考虑的情况超级多,要特别小心。
#include <bits/stdc++.h>using namespace std;//ans = (n!)^(m-1)typedef long long LL;const LL mod = 1e9+7;LL qsm(LL a, LL n){ LL ret = 1; while(n) { if(n&1) ret=ret*a%mod; a = a*a%mod; n>>=1; } return ret;}LL fac[110], f[110][110], cur[110];int n, m;int main(){ fac[0] = 1; for(int i=1; i<=100; i++) { fac[i] = fac[i-1]*i%mod; } while(~scanf("%d %d", &n,&m)) { LL cnt = 0; LL ans = 1; for(int i=1; i<=m; i++) { scanf("%lld", &f[i][1]); if(f[i][1]==-1) { cnt++; } else { for(int j=2; j<=n; j++) { scanf("%lld", &f[i][j]); if(ans) { for(int k = 1; k<j; k++) { if(f[i][k]==f[i][j]) { ans=0; } } } } } } if(ans == 1) { if(cnt == 0) { for(int i=1; i<=n; i++) cur[i]=i; for(int i=m; i>=1; i--) { for(int j=1; j<=n; j++) { cur[j]=f[i][cur[j]]; } } for(int i=1; i<=n; i++) { if(cur[i]!=i) { ans=0; break; } } } else { ans = qsm(fac[n], cnt-1); } } if(ans < 0) ans+=mod; printf("%lld\n", ans); } return 0;}
阅读全文
0 0
- 2015多校第九场 HDU 5399 Too Simple
- 多校第九场 1004 hdu 5399 Too Simple(贪心)
- 多校第九场Too Simple题解
- HDU 5399 Too Simple (2015年多校比赛第9场)
- HDU 5399 Too Simple
- HDU 5399 Too Simple
- hdu 5399 Too Simple
- hdu 5399 Too Simple 2015多校联合训练赛#9 模拟
- 2015多校第九场 HDU 5400 Arithmetic Sequence 数学
- hdu 4690 EBCDIC 多校第九场
- hdu 5399 Too Simple(计数)
- HDU 5399(Too Simple-判定映射)
- hdu 5399 Too Simple(思路题,函数)
- 多校第九场
- hdu 4686 Arc of Dream 多校第九场
- HDU 4691(多校第九场1006) 后缀数组
- hdu 4691 Front compression 多校第九场
- HDU 4970 Killing Monsters 多校第九场1011
- windows下python开发环境搭建
- 3Dslicer2:数据与帮助
- git技术实现分析
- 【Bootloader】U-BOOT全线移植分析系列之四--U-boot如何引导Linux内核启动?
- Java数组
- 2015多校第九场 HDU 5399 Too Simple
- P135-137的无bug代码
- Java NIO系列教程
- 大数据系统基础 | 绪论
- 微信怎么查看微信号
- 如何做英语二新题型
- 总结几种排序算法(二)---选择排序
- matlab中实现RANSAC平面拟合
- Django下mysql数据库的相关操作(创建数据表、以及增删查改)