HDU 5399(简单数学)
2015-08-19 08:13
281 查看
本题目的意思是给出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),本题目有特殊情况要注意.
这样问题可以转换为若任意确定一些丢失的置换,而保留一个丢失的置换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 ,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; }
相关文章推荐
- 康柏——建立持续创新的企业文化
- Windows线程池
- WPARAM和LPARAM一看就得知道是消息的附加参数
- 对领导效能进行评估可采用哪些方法?
- iOS 带cookie进行网络请求
- ios开发数组排序(数组中包括字典)
- Hibernate 下载、安装和使用
- Android Api Demos登顶之路(三十六)Fragment-->Custom Animation
- [Ruby]How to create singleton class ?
- 消息MSG、 获取消息GetMessage、消息过滤、第一个鼠标、键盘消息等
- Android点击应用Icon发生了什么
- URAL 1707. Hypnotoad's Secret(树阵)
- Scala中使用For表达式实现内幕思考
- SQL Server里ORDER BY的歧义性
- 句柄
- UVA-10689 Yet another Number Sequence (矩阵二分幂模板)
- DB 查询分析器 6.04 发布 ,本人为之撰写的相关技术文章达78篇
- DB 查询分析器 6.04 发布 ,本人为之撰写的相关技术文章达78篇
- Leetcode#74||Search a 2D Matrix
- 深度学习(deep learning)如果有春天,先得摆脱高能耗高资源依赖的局面