hdu6143 Killer Names 容斥+排列组合
/**
题目:hdu6143 Killer Names
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6143
题意:有m种字符(可以不用完),组成两个长度为n的字符串,要求这两个字符串含有的字符没有相同的。
求有多少种方式组成这两个字符串。
思路:容斥+排列组合
反思一开始以为这题是dp,然后想了很久没想出来,觉得挺不好处理的,,能力不足。
后来想到是容斥。
f[n][1]表示长度为n的字符串用1种字符填充的方法数。
f[n][2] = 2^n - C(2,1)*f[n][1]; 两种的所有填充方式-一种的填充方式。
f[n][3] = 3^n - C(3,1)*f[n][1] - C(3,2)*f[n][2];...
...
f[n][m] = m^n - sigma[1<=i<m]C(m,i)*f[n][i]; 那么可以枚举左边这个n长度字符串的组合方式用去i种字符,那么剩下那个字符串用剩下的字符任意组合即可。
注意m大于n的情况。
*/ #include<bits/stdc++.h>
#define LL long long
using namespace std; const int N = ;
const int mod = 1e9 + ; LL fac[N], inv[N];
LL f[N][N];
void init()
{
inv[] = inv[] = ;
for(int i = ; i < N; i++)inv[i] = (mod-mod/i)*inv[mod%i]%mod;
for(int i = ; i < N; i++)inv[i] = inv[i-]*inv[i]%mod;
fac[] = ;
for(int i = ; i < N; i++) fac[i] = fac[i-]*i%mod;
}
LL Pow(LL a,LL b)
{
LL p = ;
while(b){
if(b&) p = p*a%mod;
a = a*a%mod;
b >>= ;
}
return p;
}
LL C(int n,int m)
{
return fac[n]*inv[m]%mod*inv[n-m]%mod;
}
void solve(int n,int m)
{
for(int i = ; i <= min(n,m); i++){
f[n][i] = Pow(i,n);
for(int j = ; j < i; j++){
f[n][i] = (f[n][i]-f[n][j]*C(i,j)%mod+mod)%mod;
}
}
}
int main()
{
int T;
int n, m;
init();
cin>>T;
while(T--)
{
scanf("%d%d",&n,&m);
solve(n,m);
LL ans = ;
int mis;
if(m>n) mis = n;
else mis = m-;
for(int i = ; i <= mis; i++){
ans = (ans+C(m,i)*f[n][i]%mod*Pow(m-i,n)%mod)%mod;
}
cout<<ans<<endl;
}
return ;
}
hdu6143 Killer Names 容斥+排列组合的更多相关文章
- 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)
题目链接 Problem Description Galen Marek, codenamed Starkiller, was a male Human apprentice of the Sith ...
- 2017多校第8场 HDU 6143 Killer Names 容斥,组合计数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6143 题意:m种颜色需要为两段长度为n的格子染色,且这两段之间不能出现相同的颜色,问总共有多少种情况. ...
- 【BZOJ4005】[JLOI2015] 骗我呢(容斥,组合计数)
[BZOJ4005][JLOI2015] 骗我呢(容斥,组合计数) 题面 BZOJ 洛谷 题解 lalaxu #include<iostream> using namespace std; ...
- bzoj3782上学路线(Lucas+CRT+容斥DP+组合计数)
传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3782 有部分分的传送门:https://www.luogu.org/problemnew/ ...
- CF1043F Make It One 容斥+dp+组合
考试的时候考的一道题,感觉挺神的. 我们发现将所有数去重后最多只会选不到 $7$ 后 $gcd$ 就会变成 $1$. 令 $f[i][k]$ 表示选 $i$ 个数后 $gcd$ 为 $k$ 的方案数. ...
- HDU 6143 17多校8 Killer Names(组合数学)
题目传送:Killer Names Problem Description > Galen Marek, codenamed Starkiller, was a male Human appre ...
- SPOJ - AMR11H Array Diversity (水题排列组合或容斥)
题意:给定一个序列,让你求两种数,一个是求一个子序列,包含最大值和最小值,再就是求一个子集包含最大值和最小值. 析:求子序列,从前往记录一下最大值和最小值的位置,然后从前往后扫一遍,每个位置求一下数目 ...
- bzoj4767两双手 容斥+组合
4767: 两双手 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 684 Solved: 208[Submit][Status][Discuss] ...
- bzoj4710: [Jsoi2011]分特产 组合+容斥
4710: [Jsoi2011]分特产 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 289 Solved: 198[Submit][Status] ...
随机推荐
- python 网络请求类库 requests 使用
python 网络请求类库 requests 使用 requests是 为python封装的强大 REST 操作类库 githubhttps://github.com/kennethreitz/req ...
- Failed to initialize storage module: user 的解决方式
网上提供了一种解决方法就是在session_start()前把session的存储方式改为files,即加入以下一句代码 if (ini_get('session.save_handler') !== ...
- excel 如何为列添加指定内容(字符串)
excel 如何为列添加指定内容(字符串) CreateTime--2018年5月26日17:52:32 Author:Marydon 1.情景展示 D列的值需要获取B列的值并且在后面统一加上12 ...
- ADBport被占用,adb server is out of date
wd=adb&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YdPWD1uyP-PHf1ryRYP1Nh0ZwV5Hcvrj ...
- C/S和B/S 赞美创新,好酸啊。
似乎是一个很古老的话题啊...翻出来炒冷饭也是很有趣的. 昨天聊iDempiere时说到了Client这个词,我和人家说我依然会条件反射般想到了C/S,从而又SB般感慨了一番世风日下,人心不古.... ...
- Pytorch中的norm跟Numpy中的norm对比
- 流媒体协议RTMP,RTSP与HLS有什么不同
转载自:http://www.cuplayer.com/player/PlayerCode/Wowza/2015/0204/1774.html HLS (HTTP Live Streaming) Ap ...
- CentOS 6.3下Samba服务器的安装与配置(转)
一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的 ...
- kernel4.1 ioctl调用
在4.1内核中开发时遇到个奇怪的问题: 用户空间的ioctl无法调用到内核空间的unlock_ioctl 排查源码发现 546 int do_vfs_ioctl(struct file *filp, ...
- mysql拼接字符串和过滤字符的方法
数据 id value 1 aa<p>QL实木颗粒</p> 2 bb<p>QL实木颗粒</p> ...