题意:  每个物品有姓和名, 长度均为n,   给定, n, m,   m表示可用字母有m种

要求:   姓和名不能存在相同的字母(如姓:AB, 名不能出现A、B这两个字母)

问: 能构造出几个姓名(每个姓名不能完全相同) ?   方案数 % (1e9+7)

/*姓+名
枚举姓使用的字母个数k,=> 名使用的字母个数为m-k
则 方案数f(k) = C(m, k)*(k^n - SUM(C(k, j)*f(j)) * (m-k)^n
容斥处理重复 :
k^n - SUM( C(k, j)*f(j) )
*/
#include<bits/stdc++.h>
#define rep(i, a, b) for(int i=(a); i<(b); ++i)
#define ll long long
using namespace std;
const int MOD = 1e9+7;
const int maxn = 2007;
ll C[maxn][maxn]; //组合数 // 当且仅当使用了 k 个字母时候
// 去除与1~k-1重复的情况后
// 产生的方案数f(k) (first name)
ll f[maxn];
ll qpow(ll a, ll b){ //快速幂 ll ans=1;while(b){if(b&1) ans = (ans*a)%MOD;b>>=1;a = a*a%MOD;}return ans;
}
void init(){rep(i, 0, maxn){ //组合数 C[i][0] =1;rep(j, 1, i+1){C[i][j] = (C[i-1][j-1]+C[i-1][j])%MOD;}}return ;
}
int main(){int t;scanf("%d", &t);init();f[1]=1;while(t--){ll n, m ;scanf("%lld %lld", &n, &m);ll ans=0;rep(k,1, m){ll tmp = qpow(k, n);rep(j, 1, k){tmp = (tmp - C[k][j]*f[j]%MOD + MOD)%MOD;}f[k] = tmp;tmp = tmp*C[m][k]%MOD*qpow(m-k, n)%MOD;ans+=tmp;ans%=MOD;} cout << ans <<endl;}      return 0;
}

HDU 6143 (容斥)相关推荐

  1. Visible Trees HDU - 2841(容斥)

    Visible Trees HDU - 2841 题意: 大概就是有个m*n个点的矩形从(1,1)到(m,n),问从(0,0)出发直线看过去最多能看到几个点. 题解: 容斥做法参考 这个题和AcWin ...

  2. hdu 5514 容斥

    hdu 5514 题意:有n个青蛙编号1~n,m块石头编号0~m-1,石头围成一圈,每只青蛙会从第ii块跳到第(i + ai) mod m(i \ + \ a_i) \ mod \ m块,青蛙会跳无数 ...

  3. hdu 6169 - 容斥

    题目链接:点击打开链接 题解思路:这题就是要求K要是质数,且要小于R,要么肯定是0.那么我们还的知道要是K是sqrt(n)以上的质数那么值肯定是它本身,那么我们只需要先把sqrt(10^11)内的质数 ...

  4. hdu 5245Joyful 容斥

    #include<bits/stdc++.h> using namespace std; typedef long long ll;/* 就是n*m的格子,然后有一种超级刷子,可以随机选两 ...

  5. HDU 6143 Killer Names(排列+容斥,dp)

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

  6. HDU 6143 Killer Names【容斥定理】【排列组合】

    题目来戳呀 Problem Description Galen Marek, codenamed Starkiller, was a male Human apprentice of the Sith ...

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

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

  8. HDU 6143 Killer Names(容斥+组合)

    #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> ...

  9. 容斥 - HDU 4135 Co-prime

    Co-prime Problem's Link:  http://acm.hdu.edu.cn/showproblem.php?pid=4135 推荐: 容斥原理 Mean: 给你一个区间[l,r]和 ...

最新文章

  1. hdu 1042 N! 高精度运算
  2. springboot---基本模块详解
  3. DDD理论学习系列(8)-- 应用服务amp;amp;领域服务
  4. TypeError: 'range' object doesn't support item deletion
  5. java连接redis集群
  6. 工具的使用——vs2013(三)
  7. access中如何画斜线_三维并没有想象中那么难,思路清晰画图就简单
  8. 单台服务器部署桌面虚拟化,桌面虚拟化部署最重要的一个环节?!
  9. pandas处理时序数据
  10. 34个非常实用的JS一行代码
  11. kinetis FTM 分析笔记
  12. 使用adb指令往机顶盒上安装应用
  13. 2021年N1叉车司机复审考试及N1叉车司机模拟试题
  14. 无线网络和本地连接同时启用后,无线网络无法使用。
  15. cesium 设置飞机的heading pitch roll(航向等)
  16. 安川机器人怎样与变位器编程_基于CAM Function的安川机器人弧焊焊接离线编程与离线仿真...
  17. 适合程序员使用的二进制计算器Megatops BinCalc
  18. js 复制微信号码 并唤醒微信
  19. 从负债累累到老板,00后的逆袭之路
  20. CSS语法大全,学习笔记

热门文章

  1. 天津市建筑物矢量数据(Shp格式+带高度)
  2. Java基础_17 | Java多线程程序设计(Java中两种创建线程的方法、多线程之间的同步和互斥)
  3. gitweb 搭建教程
  4. 使用cerebro可视化ElasticSearch集群信息
  5. Eclipse启动失败,提示查看.metadata文件夹下的.log文件
  6. 联想ideapad 330c 15Ikb换内存条注意!!!!!只有一个插槽
  7. vscode 注释多行代码_如何在Visual Studio Code中注释多行?
  8. 计算机游戏是什么意思,端游是什么意思啊,吃鸡端游是什么意思啊
  9. 最新青龙拉库命令及监控变量教学
  10. XUL使用中的常见错误