http://www.cnblogs.com/khbcsu/p/4245943.html

本题如果直接枚举的话难度很大并且会无从下手。那么我们是否可以采取逆向思考的方法来解决问题呢?我们可以用总的情况把不符合要求的减掉就行了。

首先我们如果不考虑任何约束条件,我们可以得出如下结论:

                                                                     

下载我们假定第一行不站拉拉队员的所有的站立方法有A种。最后一行不站拉拉队员的所有的方法有B种。第一列不站拉拉队员的所有的站立方法有C种。最后一列不站拉拉队员的站立方法有D种。

下面我们可以得出最后结果:

                              

#include<cstdio>
using namespace std;
#define MOD 1000007
int C[510][510];
int T,n,m,K;
int main(){
// freopen("uva11806.in","r",stdin);
C[0][0]=1;
for(int i=1;i<=500;++i){
C[i][0]=C[i][i]=1;
for(int j=1;j<i;++j){
C[i][j]=(C[i-1][j]+C[i-1][j-1])%MOD;
}
}
scanf("%d",&T);
for(int i=1;i<=T;++i){
scanf("%d%d%d",&n,&m,&K);
int ans=C[n*m][K];
ans=(ans+MOD-C[n*(m-1)][K])%MOD;
ans=(ans+MOD-C[n*(m-1)][K])%MOD;
ans=(ans+MOD-C[(n-1)*m][K])%MOD;
ans=(ans+MOD-C[(n-1)*m][K])%MOD; ans=(ans+C[(n-1)*(m-1)][K])%MOD;
ans=(ans+C[(n-1)*(m-1)][K])%MOD;
ans=(ans+C[(n-2)*m][K])%MOD;
ans=(ans+C[(n-1)*(m-1)][K])%MOD;
ans=(ans+C[n*(m-2)][K])%MOD;
ans=(ans+C[(n-1)*(m-1)][K])%MOD; ans=(ans+MOD-C[(n-1)*(m-2)][K])%MOD;
ans=(ans+MOD-C[(n-1)*(m-2)][K])%MOD;
ans=(ans+MOD-C[(n-2)*(m-1)][K])%MOD;
ans=(ans+MOD-C[(n-2)*(m-1)][K])%MOD; ans=(ans+C[(n-2)*(m-2)][K])%MOD;
printf("Case %d: %d\n",i,ans);
}
return 0;
}

【递推】【组合数】【容斥原理】UVA - 11806 - Cheerleaders的更多相关文章

  1. UVA.11806 Cheerleaders (组合数学 容斥原理 二进制枚举)

    UVA.11806 Cheerleaders (组合数学 容斥原理 二进制枚举) 题意分析 给出n*m的矩形格子,给出k个点,每个格子里面可以放一个点.现在要求格子的最外围一圈的每行每列,至少要放一个 ...

  2. uva 11806 Cheerleaders

    // uva 11806 Cheerleaders // // 题目大意: // // 给你n * m的矩形格子,要求放k个相同的石子,使得矩形的第一行 // 第一列,最后一行,最后一列都必须有石子. ...

  3. 一种递推组合数前缀和的Trick

    记录一下一种推组合数前缀和的方法 Trick 设\(\sum_{i = 0}^m C_n^i = S(n, m)\) \(S\)是可以递推的 \(S(n, m + 1) = S(n, m) + C_{ ...

  4. bzoj3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛——递推 / 组合数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3398 对于这种有点巧妙的递推还是总是没有思路... 设计一个状态 f[i] 表示第 i 位置 ...

  5. BZOJ2339[HNOI2011]卡农——递推+组合数

    题目链接: [HNOI2011]卡农 题目要求从$S=\{1,2,3……n\}$中选出$m$个子集满足以下三个条件: 1.不能选空集 2.不能选相同的两个子集 3.每种元素出现次数必须为偶数次 我们考 ...

  6. UVa 11806 Cheerleaders (容斥原理+二进制表示状态)

    In most professional sporting events, cheerleaders play a major role in entertaining the spectators. ...

  7. UVA 11806 Cheerleaders (组合+容斥原理)

    自己写的代码: #include <iostream> #include <stdio.h> #include <string.h> /* 题意:相当于在一个m*n ...

  8. UVA 11806 Cheerleaders (容斥原理

    1.题意描述 本题大致意思是讲:给定一个广场,把它分为M行N列的正方形小框.现在给定有K个拉拉队员,每一个拉拉队员需要站在小框内进行表演.但是表演过程中有如下要求: (1)每一个小框只能站立一个拉拉队 ...

  9. UVA 11806 Cheerleaders (容斥原理)

    题意 一个n*m的区域内,放k个啦啦队员,第一行,最后一行,第一列,最后一列一定要放,一共有多少种方法. 思路 设A1表示第一行放,A2表示最后一行放,A3表示第一列放,A4表示最后一列放,则要求|A ...

随机推荐

  1. python初步学习-python数据类型-字典(dict)

    字典 字典类似于你通过联系人名字查找地址和联系人详细情况的地址簿,即,我们把键(名字)和值(详细情况)联系在一起.注意,键必须是唯一的,就像如果有两个人恰巧同名的话,你无法找到正确的信息. 注意,你只 ...

  2. bzoj 1261 区间DP

    首先我们知道ans=Σ(h[i]*f[i])=Σ(h[i]*d[i])/s=Σ(k(r[i]+1)+c)*d[i]/s=Σ(k*r[i]+(k+c))*d[i]/s 我们可以发现,除了k*r[i]之外 ...

  3. js_md5加密和base64的加密解密

    1.最近有些人在爬我们公司的数据,然有了这个md5加密的小需求.为什么叫小需求呢?嗯,之前没做过,会以为很复杂. 其实,是想多了. 2.前端md5加密,其实也并不是安全的,因为代码是可见的.也就是说, ...

  4. 关于js闭包官方解释庖丁解牛式理解

    闭包:是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 变量+环境 首先按这个句子主谓宾来分解.闭包是一个表达式,通常是一个函数. 这意味着第一它 ...

  5. 通过实例来学习XML DTD

    使用DTD的原因: 注意:由于它自身的一些缺点,DTD终将被淘汰,但是它还是要学习的.学习完DTD后,后面继续学习XML Schema. 1,通过 DTD,您的每一个 XML 文件均可携带一个有关其自 ...

  6. 转 TCP中的序号和确认号

    在网络分析中,读懂TCP序列号和确认号在的变化趋势,可以帮助我们学习TCP协议以及排查通讯故障,如通过查看序列号和确认号可以确定数据传输是否乱 序.但我在查阅了当前很多资料后发现,它们大多只简单介绍了 ...

  7. HDP-2.6.1安装

    1.首先安装HDP的Ambari仓库文件到本机的/etc/yum.repos.d/ambari.repo路径下

  8. 【Android XML】Android XML 转 Java Code 系列之 介绍(1)

    最近在公司做一个项目,需要把Android界面打包进jar包给客户使用.对绝大部分开发者来说,Android界面的布局以XML文件为主,并辅以少量Java代码进行动态调整.而打包进jar包的代码,意味 ...

  9. hit-testing机制介绍

    1.简介 寻找处理触摸事件的view的过程为hit-testing,找到的能够处理触摸事件的view叫做hit-test view. 2.机制介绍 假设下图为我们的手机屏幕,当我们假设点击了view ...

  10. hdu 3371(kruskal)

    Connect the Cities Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...