/**
题目: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 容斥+排列组合的更多相关文章

  1. 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)

    题目链接 Problem Description Galen Marek, codenamed Starkiller, was a male Human apprentice of the Sith ...

  2. 2017多校第8场 HDU 6143 Killer Names 容斥,组合计数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6143 题意:m种颜色需要为两段长度为n的格子染色,且这两段之间不能出现相同的颜色,问总共有多少种情况. ...

  3. 【BZOJ4005】[JLOI2015] 骗我呢(容斥,组合计数)

    [BZOJ4005][JLOI2015] 骗我呢(容斥,组合计数) 题面 BZOJ 洛谷 题解 lalaxu #include<iostream> using namespace std; ...

  4. bzoj3782上学路线(Lucas+CRT+容斥DP+组合计数)

    传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3782 有部分分的传送门:https://www.luogu.org/problemnew/ ...

  5. CF1043F Make It One 容斥+dp+组合

    考试的时候考的一道题,感觉挺神的. 我们发现将所有数去重后最多只会选不到 $7$ 后 $gcd$ 就会变成 $1$. 令 $f[i][k]$ 表示选 $i$ 个数后 $gcd$ 为 $k$ 的方案数. ...

  6. HDU 6143 17多校8 Killer Names(组合数学)

    题目传送:Killer Names Problem Description > Galen Marek, codenamed Starkiller, was a male Human appre ...

  7. SPOJ - AMR11H Array Diversity (水题排列组合或容斥)

    题意:给定一个序列,让你求两种数,一个是求一个子序列,包含最大值和最小值,再就是求一个子集包含最大值和最小值. 析:求子序列,从前往记录一下最大值和最小值的位置,然后从前往后扫一遍,每个位置求一下数目 ...

  8. bzoj4767两双手 容斥+组合

    4767: 两双手 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 684  Solved: 208[Submit][Status][Discuss] ...

  9. bzoj4710: [Jsoi2011]分特产 组合+容斥

    4710: [Jsoi2011]分特产 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 289  Solved: 198[Submit][Status] ...

随机推荐

  1. Cognos备份与恢复方案

    场景:早上来上班,突然发现COGNOS服务器挂掉了,比如硬盘彻底坏掉了,不能恢复了,那该怎么办?前提是肯定要有备份啊. 备份内容: A:FM模型备份OKB:Cognos内容库备份OK 恢复过程: 1: ...

  2. Redis数据类型--List

    Redis列表是简单的字符串列表,依照插入顺序排序. 你能够加入一个元素到列表的头部(左边)或者尾部(右边) LPUSH 命令插入一个新的元素到头部, RPUSH插入一个新元素到尾部. 当一个这两个操 ...

  3. Tetris

    he Tetris game is one of the most popular computer games ever created. The original game was designe ...

  4. Android应用开发相关下载资源(2014/12/14更新)

    官方终于发布了Android Studio正式版,Android Studio将会成为推荐使用的主要Android开发工具. (1)Android SDK (Android SDK主安装包,包含SDK ...

  5. 怎样线程安全地遍历List:Vector、CopyOnWriteArrayList

    遍历List的多种方式 在讲怎样线程安全地遍历List之前,先看看通常我们遍历一个List会採用哪些方式. 方式一: for(int i = 0; i < list.size(); i++) { ...

  6. dom与jquery互相转换

    /*取得<input>标签中的value属性的内容[dom对象->jquery对象] var inputElement = document.getElementById(" ...

  7. 【LeetCode】103. Binary Tree Zigzag Level Order Traversal

    Binary Tree Zigzag Level Order Traversal Given a binary tree, return the zigzag level order traversa ...

  8. mysql和redis之间互相备份

    http://code.google.com/p/redisql/wiki/Examples 项目地址:https://github.com/JakSprats/predis/blob/master/ ...

  9. Sphinx全文检索引擎测试

    数据表 1.documents CREATE TABLE `documents` ( `id` int(13) NOT NULL auto_increment, `group_id` int(11) ...

  10. C# : 连接SDE空间数据库时出错

    1.SDE认证问题:使用ArcGIS.KeyGen.exe生成一个epp文件方法:-->server-->All-->拷贝并保存为*.epp文件.认证时加载该文件即可认证完毕.2.实 ...