HDU 5399(简单数学)
来源:互联网 发布:联通网络信号怎么样 编辑:程序博客网 时间:2024/05/01 09:36
本题目的意思是给出m个 (f1 , f2, ... fm) 置换,一些置换丢失,让求有多少种组合,可以使得 f1( f2(... fm(i))) =i (1<=i<=n) 对多有的i都成立;
这样问题可以转换为若任意确定一些丢失的置换,而保留一个丢失的置换fi, 有 X*fi*Y=I; fi =(X的逆)*(Y的逆)所以,有唯一解,所以个数为记-1的个数为cnt
那么结果(n!)^(cnt-1),本题目有特殊情况要注意.
#include<cstring>#include<cstdlib>#include<cstdio>#include<cmath>#include<algorithm>#include<map>#include<set>#include<string>#include<vector>#include <iostream>#include<assert.h>#define pb push_back#define rep1(i,j,k) for(int i=(j);i<=(int)k;i++)#define per1(i,j,k) for(int i=(j);i>=(int)k;i--)#define lowbit(x) ((x)&(-(x)))#define fi first#define se second#define pii pair<int,int>#define VI vector<int>using namespace std;typedef long long ll;const int N = 110;const int mod = 1e9+7;int n,m,f[N][N],cnt;void read(){ cnt = 0; rep1(i,1,m){ scanf("%d",&f[i][1]); if(f[i][1]==-1){cnt++; continue;} rep1(j,2,n) scanf("%d",&f[i][j]); }}void solve(){ for(int i=1;i<=m;i++){ int vis[1006]={0}; if(f[i][1]==-1) continue; rep1(j,1,n) { if(++vis[f[i][j]] > 1) {printf("0\n"); return;} } } if(cnt == 0){ int ok=1; rep1(j,1,n){ int now = j; per1(i,m,1) now=f[i][now]; if(now != j) { ok =0; break; } } printf("%d\n",ok); return ; } ll ji=1; rep1(i,2,n) ji=ji*i%mod; ll res=1; rep1(i,1,cnt-1) res=res*ji%mod; printf("%d\n",(int)res);}int main(){ while(scanf("%d %d",&n,&m)==2){ read(); solve(); } return 0;}
0 0
- HDU 5399(简单数学)
- hdu 2401 (简单数学)
- hdu 2212 (简单数学)
- hdu 1707 (简单数学)
- hdu 5387 Clock 简单数学
- hdu 5399(数学推理)
- HDU-2899(简单数学问题+二分查找)
- hdu 4061 数学(结论简单)
- hdu 2201 (简单数学概率)
- hdu 1019 Least Common Multiple 简单数学
- HDU---1030-Delta-wave (简单数学)
- HDU 2803--The MAX【简单数学】
- hdu-1018-Big Number-简单数学
- hdu 2674 N!Again(简单数学)
- hdu 2552 三足鼎立(简单数学)
- HDU 6033 Add More Zero 简单数学
- hdu 1576 A/B(数学:简单水题)
- hdu 1788 Chinese remainder theorem again((数学:简单题)
- 基于深度优先算法的有向图环路检测
- 消息MSG、 获取消息GetMessage、消息过滤、第一个鼠标、键盘消息等
- Android点击应用Icon发生了什么
- Android Api Demos登顶之路(三十六)Fragment-->Custom Animation
- Hibernate 下载、安装和使用
- HDU 5399(简单数学)
- ios开发数组排序(数组中包括字典)
- Windows线程池
- iOS 带cookie进行网络请求
- WPARAM和LPARAM一看就得知道是消息的附加参数
- 海量数据处理:十道面试题与十个海量数据处理方法总结
- java基础学习多线程学习笔记
- 微信公众平台开发(2)回复超链接
- QT串口工具(3)