UVA11806 Cheerleaders (容斥)
题目链接
Solution
可以考虑到总方案即为 \(C_{nm}^k\) .
考虑到要求的是边缘都必须至少有 \(1\) ,所以考虑不合法的.
第一行和最后一行没有的方案即为 \(C_{(n-1)m}^k\)
第一列和最后一列没有的方案即为 \(C_{(m-1)n}^k\)
然后考虑将四边状态压起来,然后可以做容斥.
这四个状态只要有一位为 \(0\) ,那么就可以统计答案.
这时状态为0,就是都有算进去;
这时如果碰到 \(0001\),也就是第一行没有的状态,我们就减掉\(C_{(n-1)m}^k\);
同理碰到\(0010\),\(0100\),\(1000\)是同样的做法;
但是这样减完会多减了很多,你减掉不包含第一行的情况,和不包含第一列的情况;那么同时不包含第一行和第一列的情况就减了两次;
所以最后我们把出现偶数个1的情况加上去,出现奇数个1的情况减掉;
Code
#include<bits/stdc++.h>
const int mod=1000007;
const int N=505;
int c[N][N];
int n,m,k;
//由于n很小,所以可以直接递推组合数
void getC(int n)
{
memset(c,0,sizeof(c));
c[0][0]=1;
for(int i=0;i<=n;i++)
{
c[i][0]=c[i][i]=1;
for(int j=0;j<i;j++)
c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
}
}
int main()
{
getC(N);
int t,cas=1;
scanf("%d",&t);
while(t--)
{
int sum=0;
scanf("%d%d%d",&n,&m,&k);
for(int s=0;s<16;s++)
{
int a=n,b=m,cnt=0;
if(s&(1<<0)) a--,cnt++;
if(s&(1<<1)) a--,cnt++;
if(s&(1<<2)) b--,cnt++;
if(s&(1<<3)) b--,cnt++;
if(cnt%2)
sum=(sum+mod-c[a*b][k])%mod;
else
sum=(sum+c[a*b][k])%mod;
}
printf("Case %d: %d\n",cas++,sum);
}
}
UVA11806 Cheerleaders (容斥)的更多相关文章
- UVA-11806 Cheerleaders 计数问题 容斥定理
题目链接:https://cn.vjudge.net/problem/UVA-11806 题意 在一个mn的矩形网格里放k个石子,问有多少方法. 每个格子只能放一个石头,每个石头都要放,且第一行.最后 ...
- [uva11806]容斥定理
n*m的矩形 k个人 第一行,最后一行,第一列,最后一列都至少站有一个人 小水题 正着做不好做,要反着想,那就容斥定理,ABCD四种情况分别是那四个行列分别没有人. #include<cstdi ...
- POJ1091跳蚤(容斥 + 唯一分解 + 快速幂)
题意:规定每次跳的单位 a1, a2, a3 …… , an, M,次数可以为b1, b2, b3 …… bn, bn + 1, 正好表示往左,负号表示往右, 求能否调到左边一位,即 a1* b1 ...
- HDU 4059 容斥初步练习
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> ...
- HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)
题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...
- 【BZOJ-4455】小星星 容斥 + 树形DP
4455: [Zjoi2016]小星星 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 204 Solved: 137[Submit][Status] ...
- cf#305 Mike and Foam(容斥)
C. Mike and Foam time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- UVa12633 Super Rooks on Chessboard(容斥 + FFT)
题目 Source http://acm.hust.edu.cn/vjudge/problem/42145 Description Let’s assume there is a new chess ...
- PE-1 & 暴模|容斥
题意: 求1000以下3或5的倍数之和. SOL: 暴模也是兹瓷的啊... 那么就想到了初赛悲催的滚粗...容斥忘了加上多减的数了... 然后对着题...T = 3*333*(1+333)/2 + 5 ...
随机推荐
- 自动生成 WebApi 在线说明文档。
1.使用Swashbuckle实现 Swashbuckle 是.NET类库,可以将WebAPI所有开放的控制器方法生成对应SwaggerUI的JSON配置.再通过SwaggerUI 显示出来.类库中已 ...
- es6中的类及es5类的实现
目录 类的特点 类的特点 1.类只能通过new得到 在es6中类的使用只能是通过new,如果你将它作为一个函数执行,将会报错. //es6的写法 class Child { constructor() ...
- linux下/dev/null被误删
/dev/null文件是一个特殊的设备文件,可以用于清空一些日志文件,或者是使一些信息输出到此文件,用以节省硬盘空间.如果该空文件/dev/null文件被误删除掉, 如何再使用系统命令重新创建并设置该 ...
- 【Python学习之七】面向对象高级编程——使用@property
参考来自廖雪峰Python教程:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/ ...
- Shell脚本使用汇总整理——达梦数据库备份脚本
Shell脚本使用汇总整理——达梦数据库备份脚本 Shell脚本使用的基本知识点汇总详情见连接: https://www.cnblogs.com/lsy-blogs/p/9223477.html 脚本 ...
- jenkins+svn+pipeline+kubernetes部署java应用(三)
将jar包.Dockerfile.kubernetes部署yaml文件上传至svn自定义目录 一.生成流水线脚本 二.配置jenkins pipeline构建语句 三.点击构建java工程
- API Star:一个 Python 3 的 API 框架
为了在 Python 中快速构建 API,我主要依赖于 Flask.最近我遇到了一个名为 "API Star" 的基于 Python 3 的新 API 框架.由于几个原因,我对它很 ...
- React学习记录二
环境基本弄清楚了以后,开始总会写个hello world什么的,开发做了这么久了,就跳过这一步吧. 还是从打开vscode说起吧,这里文件菜单打开一个文件夹Demos,查看菜单打开集成终端,也可以使用 ...
- DFS、栈、双向队列:CF264A- Escape from Stones
题目: Squirrel Liss liv Escape from Stonesed in a forest peacefully, but unexpected trouble happens. S ...
- 库函数的使用:sscanf的使用方法
先贴代码,可以看懂代码的直接看代码: /***************************************************** ** Name : sscanf.c ** Auth ...