HDU 6143 (容斥)
题意: 每个物品有姓和名, 长度均为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 (容斥)相关推荐
- Visible Trees HDU - 2841(容斥)
Visible Trees HDU - 2841 题意: 大概就是有个m*n个点的矩形从(1,1)到(m,n),问从(0,0)出发直线看过去最多能看到几个点. 题解: 容斥做法参考 这个题和AcWin ...
- hdu 5514 容斥
hdu 5514 题意:有n个青蛙编号1~n,m块石头编号0~m-1,石头围成一圈,每只青蛙会从第ii块跳到第(i + ai) mod m(i \ + \ a_i) \ mod \ m块,青蛙会跳无数 ...
- hdu 6169 - 容斥
题目链接:点击打开链接 题解思路:这题就是要求K要是质数,且要小于R,要么肯定是0.那么我们还的知道要是K是sqrt(n)以上的质数那么值肯定是它本身,那么我们只需要先把sqrt(10^11)内的质数 ...
- hdu 5245Joyful 容斥
#include<bits/stdc++.h> using namespace std; typedef long long ll;/* 就是n*m的格子,然后有一种超级刷子,可以随机选两 ...
- HDU 6143 Killer Names(排列+容斥,dp)
Killer Names HDU 6143 (容斥+排列组合,dp+整数快速幂) 2017ACM暑期多校联合训练 - Team 8 1011 Killer Names 题目链接 Time Limit: ...
- HDU 6143 Killer Names【容斥定理】【排列组合】
题目来戳呀 Problem Description Galen Marek, codenamed Starkiller, was a male Human apprentice of the Sith ...
- 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)...
题目链接 Problem Description Galen Marek, codenamed Starkiller, was a male Human apprentice of the Sith ...
- HDU 6143 Killer Names(容斥+组合)
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> ...
- 容斥 - HDU 4135 Co-prime
Co-prime Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=4135 推荐: 容斥原理 Mean: 给你一个区间[l,r]和 ...
最新文章
- hdu 1042 N! 高精度运算
- springboot---基本模块详解
- DDD理论学习系列(8)-- 应用服务amp;amp;领域服务
- TypeError: 'range' object doesn't support item deletion
- java连接redis集群
- 工具的使用——vs2013(三)
- access中如何画斜线_三维并没有想象中那么难,思路清晰画图就简单
- 单台服务器部署桌面虚拟化,桌面虚拟化部署最重要的一个环节?!
- pandas处理时序数据
- 34个非常实用的JS一行代码
- kinetis FTM 分析笔记
- 使用adb指令往机顶盒上安装应用
- 2021年N1叉车司机复审考试及N1叉车司机模拟试题
- 无线网络和本地连接同时启用后,无线网络无法使用。
- cesium 设置飞机的heading pitch roll(航向等)
- 安川机器人怎样与变位器编程_基于CAM Function的安川机器人弧焊焊接离线编程与离线仿真...
- 适合程序员使用的二进制计算器Megatops BinCalc
- js 复制微信号码 并唤醒微信
- 从负债累累到老板,00后的逆袭之路
- CSS语法大全,学习笔记
热门文章
- 天津市建筑物矢量数据(Shp格式+带高度)
- Java基础_17 | Java多线程程序设计(Java中两种创建线程的方法、多线程之间的同步和互斥)
- gitweb 搭建教程
- 使用cerebro可视化ElasticSearch集群信息
- Eclipse启动失败,提示查看.metadata文件夹下的.log文件
- 联想ideapad 330c 15Ikb换内存条注意!!!!!只有一个插槽
- vscode 注释多行代码_如何在Visual Studio Code中注释多行?
- 计算机游戏是什么意思,端游是什么意思啊,吃鸡端游是什么意思啊
- 最新青龙拉库命令及监控变量教学
- XUL使用中的常见错误