/**
题目: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. Python MongoDB Spatial Query

    //引入Pymongo >>> from pymongo import MongoClient,GEO2D // 链接数据库gis >>> db = MongoCl ...

  2. 北京SAP-AGS CoE support consultant intern 面试总结

    7月4号去大连SAP面试.通过的话直接去北京SAP參加实习(有幸已通过). SAP一直是我理想的公司,大二的时候曾试图參加SAP大连vt项目,当时下了非常大决心,假设通过了就先留在大连,可惜英语群面就 ...

  3. T-SQL 之 语法元素

    一.标识符 在T-SQL语言中,对SQLServer数据库及其数据对象(比如表.索引.视图.存储过程.触发器等)需要以名称来进行命名并加以区分,这些名称就称为标识符. 通常情况下,SQLServer数 ...

  4. onvif获取摄像头的流媒体地址完整流程

    linux设备上的Onvif 实现6:获取摄像头的流媒体地址完整流程 整体流程: Probe: 发现网络摄像头,获取webserver地址 http://192.168.15.240/onvif/de ...

  5. MESI-CPU缓存一致性协议

    转http://blog.csdn.net/realxie/article/details/7317630 http://en.wikipedia.org/wiki/MESI_protocol MES ...

  6. 算法笔记_140:最小费用最大流问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 在最大流有多组解时,给每条边在附上一个单位费用的量,问在满足最大流时的最小费用是多少? 2 解决方案 下面代码所使用的测试数据如下图: 具体代码如下 ...

  7. Php自动备份数据库实现方法

    然后再服务器开启 定时任务执行这个方法即可.

  8. android判断服务是否是运行状态

    /** * 判断服务是否处于运行状态. * @param servicename * @param context * @return */ public static boolean isServi ...

  9. [Exception JavaWeb 1] - Cause: com.microsoft.sqlserver.jdbc.SQLServerException: '@P2' 附近有语法错误。

    严重: Servlet.service() for servlet [springMVC] in context with path [/ExceptionManageSystem] threw ex ...

  10. NowCoderG:最大平方数

    求不大于 N 的最大的平方数: 思路:输入数的平方根向下取整的数的平方即为所求. Python代码: import sys import math num=int(sys.stdin.readline ...