Codeforces 152C Pocket Book 思维
2017-01-30 18:07
411 查看
点击打开链接
题意:给出n个string,每个长度都为m(n,m<=100).操作i,j,k将swap(i,j)行string的前k字符,问第一行有多少种不同的string?
由样例AAB BAA 容易发现:由于每次交换都为前缀,无论怎么交换,交换多少次,最后string中的第k个字符只可能为某一行的第k个
统计cnt[k] 第k个位置的不同字符个数,计算ans=cnt[1]*..cnt[m]即可
题意:给出n个string,每个长度都为m(n,m<=100).操作i,j,k将swap(i,j)行string的前k字符,问第一行有多少种不同的string?
由样例AAB BAA 容易发现:由于每次交换都为前缀,无论怎么交换,交换多少次,最后string中的第k个字符只可能为某一行的第k个
统计cnt[k] 第k个位置的不同字符个数,计算ans=cnt[1]*..cnt[m]即可
#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll mod=1e9+7; const int N=2e3+20; int main() { int n,m; while(cin>>n>>m) { ll ans=1; map<int,int> mp ;//mp[k][c] 第k个字符能否选c for(int i=1;i<=n;i++) { char s ; scanf("%s",s+1); for(int k=1;k<=m;k++) { mp[k][s[k]-'A'+1]=1; } } for(int i=1;i<=m;i++) { ll cnt=0; for(int j=1;j<=26;j++) { if(mp[i][j]) cnt++; } ans=(ans*cnt)%mod; } cout<<ans<<endl; } return 0; }
相关文章推荐
- Codeforce-152C-Pocket Book(排列组合+思维)
- CodeForces 152C Pocket Book
- CodeForces 152C Pocket Book(找规律+哈希)
- CodeForces152C——Pocket Book(排列组合问题)
- CodeForces 152C Pocket Book
- Codeforces 500C:New Year Book Reading(思维+贪心?)
- codeforces 500C New Year Book Reading (贪心+思维)
- CodeForces 500C New Year Book Reading(贪心+思维)
- CF152C: Pocket Book(思维)
- codeforces 500c New Year Book Reading 【思维】
- codeforces 500C New Year Book Reading (贪心,很好的思维题)
- CodeForces 811B——Vladik and Complicated Book ——思维,模拟
- CodeForces 152 C.Pocket Book(组合数学)
- 01(CodeforcesC水平)CQU新生周末狂欢赛O- Pocket Book
- codeforces 337D 树形DP Book of Evil
- Codeforces 722C(并查集 + 思维)
- CodeForces - 729D Sea Battle(思维题)
- codeforces 264B Good Sequences(DP+灵活思维)【最长不互质序列模板】
- Codeforces 710C Magic Odd Square【思维】
- Codeforces 330C Purification【思维】