博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Uva 11806 拉拉队
阅读量:6644 次
发布时间:2019-06-25

本文共 1075 字,大约阅读时间需要 3 分钟。

题目链接:

题意:

n行m列的矩阵上放k个棋子,其中要求第一行,最后一行,第一列,最后一列必须要有。有多少种放法;

分析:

要是没有那个条件,就直接是C(n*m,k)了,其实也可以转换过来。

设满足“第一行没有棋子”的方案数为A,“最后一行没有棋子”的方案数B,C,D;

然后用容斥原理可以求出。

这里用二进制表示这16种组合;满足偶数个条件为+;

1 #include 
2 3 using namespace std; 4 5 const int MOD = 1000007; 6 const int maxn = 500; 7 int C[maxn+10][maxn+10]; 8 9 int main()10 {11 memset(C,0,sizeof(C));12 C[0][0] = 1;13 14 for(int i=0;i<=maxn;i++) {15 C[i][0] = C[i][i] = 1;16 for(int j=1;j
>t;22 int kase = 1;23 while(t--) {24 int n,m,k,sum = 0;25 cin>>n>>m>>k;26 for(int S=0;S<16;S++) {27 int b = 0;28 int r = n;29 int c = m;30 if(S&1) {r--;b++;}31 if(S&2) {r--;b++;}32 if(S&4) {c--;b++;}33 if(S&8) {c--;b++;}34 if(b&1) sum = (sum + MOD - C[r*c][k]) % MOD;35 else sum = (sum + C[r*c][k])%MOD;36 }37 printf("Case %d: %d\n",kase++,sum);38 }39 40 return 0;41 }

 

转载于:https://www.cnblogs.com/TreeDream/p/6388054.html

你可能感兴趣的文章
php二次开发以及垃圾回收机制
查看>>
转载《Data Guard Broker基础》
查看>>
Redhat openstack6.0的安装
查看>>
交换机套装书获京东网双重重磅推荐
查看>>
演示:设置密码长度限制、密码加强
查看>>
Hadoop系列之三:函数式编程语言和MapReduce
查看>>
模版(Template)在框架API设计之妙用
查看>>
IP数据包经由路由转发的时候,源ip和目的IP是否改变
查看>>
Open-E DSS V7 应用系列之七 卷组和卷的管理
查看>>
Installing Oracle Database 18c Using RPM Packages
查看>>
AD恢复(3)使用AD回收站
查看>>
C++static成员函数和static成员的学习
查看>>
openvswitch在rhel61+kvm环境中的使用
查看>>
***S 2012 参数化报表 -- 利用拼接字符串来取代查询参数
查看>>
大容量导入和导出数据 -- 介绍
查看>>
用幻灯片做完整的“一站到底”抢答器
查看>>
创新创新再创新(3)
查看>>
一个简单的mysql服务检测启动脚本
查看>>
linux 下搭建BugFree
查看>>
DT02_设计思维的要素_假定(Hypothesis)
查看>>