UVA11806: Composite Prime (容斥 & 组合数)
来源:互联网 发布:灰盒测试知乎 编辑:程序博客网 时间:2024/06/07 18:22
题意:给出M*N的矩阵和K个人,要求第一行,最后一行,第一列,最后一列必须放置人,求放置的方案数。
思路:正着求不好求,反着求算出非法的方案数,用总的减去它就行,这就需要容斥一下了。给4条边界编号为1,2,3,4,分别求出1,2,3,4,1和2,1和3......边没人的情况,奇数加偶数减那样就行。组合数用杨辉三角打表。
# include <iostream># include <cstdio># include <algorithm># define ll long longusing namespace std;const int mod = 1000007;int c[403][403], n, m, t, k, cas=1;void init(){ c[0][0] = 1; for(int i=1; i<403; ++i) { c[i][0] = c[i][i] = 1; for(int j=1; j<i; ++j) c[i][j] = (c[i-1][j-1]+c[i-1][j]) % mod; }}int solve(){ int a, b, sum = 0, ans = 0; for(int i=0; i<(1<<4); ++i)//枚举状态,1代表该边无人。 { a = n; b = m; sum = 0; for(int j=0; j<4; ++j) { if(i&(1<<j)) { ++sum; j&1?--a:--b; } } ans = (ans + c[a*b][k]*(sum&1?-1:1)+mod)%mod; } return ans;}int main(){ init(); scanf("%d",&t); while(t--) { scanf("%d%d%d",&n,&m,&k); printf("Case %d: %d\n",cas++, solve()); } return 0;}
0 0
- UVA11806: Composite Prime (容斥 & 组合数)
- 20160331 UVA11806 Cheerleaders(组合数公式+容斥原理)
- UVA11806容斥原理,位运算排列,递推组合数
- uva11806(容斥原理)拉拉队
- uva11806(容斥定理)
- UVA11806(容斥)
- UVA11806 容斥原理
- uva11806 - Cheerleaders 容斥原理
- UVa11806 Cheerleaders(容斥原理)
- HDU 4135 Co-prime(组合+容斥)
- Uva11806——容斥原理
- UVA11806-Cheerleaders(容斥原理+二进制)
- 【UVA11806】Cheerleaders——容斥
- UVA11806-Cheerleaders(容斥原理+二进制)
- 容斥原理——Uva11806-Cheerleaders
- UVA 11806 Cheerleaders(容斥原理)(组合数)
- UVA 11806 Cheerleaders(容斥原理 + 组合数)
- 组合数+二项式反演(容斥)-UVALive
- DataFrame执行groupby聚合操作后,如何继续保持DataFrame对象而不变成Series对象
- 二叉搜索树
- 基于 Django1.10 文档的深入学习(16)——Authentication backends 之 class ModelBackend
- linux内核空间内存管理基本架构
- utf-8中的汉字占多少个字节
- UVA11806: Composite Prime (容斥 & 组合数)
- Numpy入门——Python数据分析mooc笔记
- Unity3D手游开发日记(10)
- 集合类Stack的用法
- ubuntu 搭建 svn服务器,使用http方式访问
- 说说Servlet 生命周期、工作原理
- 设置自己的sleep函数
- 二叉树之用java语言实现
- 基于 Django1.10 文档的深入学习(17)——Customizing authentication 之 Custom users and permissions