1. /**
  2. 题目:hdu6143 Killer Names
  3. 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6143
  4. 题意:有m种字符(可以不用完),组成两个长度为n的字符串,要求这两个字符串含有的字符没有相同的。
  5. 求有多少种方式组成这两个字符串。
  6. 思路:容斥+排列组合
  7. 反思一开始以为这题是dp,然后想了很久没想出来,觉得挺不好处理的,,能力不足。
  8. 后来想到是容斥。
  9. f[n][1]表示长度为n的字符串用1种字符填充的方法数。
  10. f[n][2] = 2^n - C(2,1)*f[n][1]; 两种的所有填充方式-一种的填充方式。
  11. f[n][3] = 3^n - C(3,1)*f[n][1] - C(3,2)*f[n][2];...
  12. ...
  13. f[n][m] = m^n - sigma[1<=i<m]C(m,i)*f[n][i];
  14.  
  15. 那么可以枚举左边这个n长度字符串的组合方式用去i种字符,那么剩下那个字符串用剩下的字符任意组合即可。
  16. 注意m大于n的情况。
  17. */
  18.  
  19. #include<bits/stdc++.h>
  20. #define LL long long
  21. using namespace std;
  22.  
  23. const int N = ;
  24. const int mod = 1e9 + ;
  25.  
  26. LL fac[N], inv[N];
  27. LL f[N][N];
  28. void init()
  29. {
  30. inv[] = inv[] = ;
  31. for(int i = ; i < N; i++)inv[i] = (mod-mod/i)*inv[mod%i]%mod;
  32. for(int i = ; i < N; i++)inv[i] = inv[i-]*inv[i]%mod;
  33. fac[] = ;
  34. for(int i = ; i < N; i++) fac[i] = fac[i-]*i%mod;
  35. }
  36. LL Pow(LL a,LL b)
  37. {
  38. LL p = ;
  39. while(b){
  40. if(b&) p = p*a%mod;
  41. a = a*a%mod;
  42. b >>= ;
  43. }
  44. return p;
  45. }
  46. LL C(int n,int m)
  47. {
  48. return fac[n]*inv[m]%mod*inv[n-m]%mod;
  49. }
  50. void solve(int n,int m)
  51. {
  52. for(int i = ; i <= min(n,m); i++){
  53. f[n][i] = Pow(i,n);
  54. for(int j = ; j < i; j++){
  55. f[n][i] = (f[n][i]-f[n][j]*C(i,j)%mod+mod)%mod;
  56. }
  57. }
  58. }
  59. int main()
  60. {
  61. int T;
  62. int n, m;
  63. init();
  64. cin>>T;
  65. while(T--)
  66. {
  67. scanf("%d%d",&n,&m);
  68. solve(n,m);
  69. LL ans = ;
  70. int mis;
  71. if(m>n) mis = n;
  72. else mis = m-;
  73. for(int i = ; i <= mis; i++){
  74. ans = (ans+C(m,i)*f[n][i]%mod*Pow(m-i,n)%mod)%mod;
  75. }
  76. cout<<ans<<endl;
  77. }
  78. return ;
  79. }

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. Microjs: 超棒的迷你框架和迷你类库搜罗工具

    你可以按条件方便的搜索需要的类库或者框架,以下为条件 基础框架 模板引擎 DOM操作 CSS动画 Javascript动画 数据操作 更多 阅读原文:Microjs: 超棒的迷你框架和迷你类库搜罗工具

  2. SQL2005 镜像配置

    新添加了一台服务器,做原来服务器的备份机,用交叉线+双网卡配置了内网. 系统环境:Windows 2008 R2 数据库:SQL2005 SP3   设置镜像可以用证书和域两种情况,不过域设置的权限比 ...

  3. PHP快速入门 常用配置

    1 打开php.ini-dist文件 2 查找"file_uploads",确定为On(确定服务器上的 PHP 脚本是否可以接受文件上传.) 3 查找"max_execu ...

  4. Spring Boot学习记录(二)–thymeleaf模板

    自从来公司后都没用过jsp当界面渲染了,因为前后端分离不是很好,反而模板引擎用的比较多,thymeleaf最大的优势后缀为html,就是只需要浏览器就可以展现页面了,还有就是thymeleaf可以很好 ...

  5. 【十二】注入框架RoboGuice使用:(Your First Injected ContentProvider)

    上一篇我们简单的介绍了一下RoboGuice的使用([十一]注入框架RoboGuice使用:(Your First Injection into a Custom View class)),今天我们来 ...

  6. CompletableFuture 详解

    转 http://www.jianshu.com/p/6f3ee90ab7d3 CompletableFuture类实现了CompletionStage和Future接口.Future是Java 5添 ...

  7. win10 你没有足够的权限执行此操作。

      win10 你没有足够的权限执行此操作. CreateTime--2018年4月21日08:21:31 Author:Marydon 鼠标悬浮到windows图标上,右键-->选择:以命令提 ...

  8. 简述document.write和 innerHTML的区别。

    document.write是重写整个document, 写入内容是字符串的htmlinnerHTML是HTMLElement的属性,是一个元素的内部html内容

  9. 摘:常用函数(包括:宽字符函数、普通C函数 )

    只要看见“W”就是宽的意思,左边wchar_t,右边char 字符分类: 宽字符函数            普通C函数            描述 iswalnum()             isa ...

  10. centos 7 搭建git远程仓储 免密登录

    第一步.安装git服务 yum install git 第二步.创建git用户 adduser git 第三步开启公钥验证 vi /etc/ssh/sshd_config 讲文件中的 #PubkeyA ...