题目链接:https://cn.vjudge.net/problem/UVA-11806

题意

在一个mn的矩形网格里放k个石子,问有多少方法。

每个格子只能放一个石头,每个石头都要放,且第一行、最后一行、第一列和最后一列都有石子。

思路

设A为第一行格子、B为最后一行、C为第一列、D为最后一列。

很明显发现ABCD这个集合包含了重复元素,那么按照容斥定理可解。

注意:

  1. 1000007 不是素数,不能递推算逆元,因为mod%i==0
  2. 不要用乘法递推式算C,要用加法
  3. 容斥的技巧,用cont计数总方案,_cont计数奇偶

提交过程

WA×n 上面的注意注意一下
AC

代码

#include <cstdio>
#include <cstring>
const int maxn=20+5, maxk=500+20;;
const long long mod=1000007; // is not a prime.
int n, m, k;
long long C[maxk][maxk];
void init(void){
memset(C, 0, sizeof(C));
C[0][0]=1;
for (int i=1; i<maxk; 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;
// C[i][j]=(C[i][j-1]*(i-j+1)/j)%mod;
}
} int main(void){
int T, kase=0; init();
scanf("%d", &T);
while (T--){
scanf("%d%d%d", &n, &m, &k); long long ans=0;
for (int cnt=0; cnt<16; cnt++){
int _cnt=0, nn=n, mm=m;
if (cnt&1) {nn--; _cnt++;}
if (cnt&2) {nn--; _cnt++;}
if (cnt&4) {mm--; _cnt++;}
if (cnt&8) {mm--; _cnt++;} if (_cnt%2) ans=(ans+mod-C[nn*mm][k])%mod;
else ans=(ans+C[nn*mm][k])%mod;
}printf("Case %d: %lld\n", ++kase, ans);
} return 0;
}
Time Memory Length Lang Submitted
None None 971 C++ 5.3.0 2018-09-05 17:33:47

UVA-11806 Cheerleaders 计数问题 容斥定理的更多相关文章

  1. UVA 11806 Cheerleaders dp+容斥

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

  2. uva 11806 Cheerleaders (容斥)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

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

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

  4. uva 11806 Cheerleaders

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

  5. HDU 1796How many integers can you find(简单容斥定理)

    How many integers can you find Time Limit: 12000/5000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  6. Codeforces Round #330 (Div. 2) B. Pasha and Phone 容斥定理

    B. Pasha and Phone Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/595/pr ...

  7. hdu_5213_Lucky(莫队算法+容斥定理)

    题目连接:hdu_5213_Lucky 题意:给你n个数,一个K,m个询问,每个询问有l1,r1,l2,r2两个区间,让你选取两个数x,y,x,y的位置为xi,yi,满足l1<=xi<=r ...

  8. How Many Sets I(容斥定理)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3556 How Many Sets I Time Limit: 2 ...

  9. HDU - 4135 Co-prime 容斥定理

    题意:给定区间和n,求区间中与n互素的数的个数, . 思路:利用容斥定理求得先求得区间与n互素的数的个数,设表示区间中与n互素的数的个数, 那么区间中与n互素的数的个数等于.详细分析见求指定区间内与n ...

随机推荐

  1. C++一些知识难点

    什么是"引用"?申明和使用"引用"要注意哪些问题? 答:引用就是某个目标变量的"别名"(alias).相应用的操作与对变量直接操作效果全然同 ...

  2. fragment.setMenuVisibility setUserVisibleHint

    [Android]Fragment真正意义上的onResume和onPause 前言 Fragment虽然有onResume和onPause的,但是这两个方法是Activity的方法,调用时机也是与A ...

  3. android监听虚拟按键的显示与隐藏【转】

    本文转载自:http://blog.csdn.net/u014583590/article/details/55263141 虚拟按键在华为手机中大量存在,而虚拟按键的存在无疑增加了屏幕适配的难度,往 ...

  4. Jenkins project

    1.project name 这个作为git clone的target folder 2.Multiple SCMs 建立2个git类型的操作,相互独立. additional Behaviors 设 ...

  5. nyoj--79--导弹拦截(动态规划)

    拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任 ...

  6. 谷歌浏览器(chrome) —— 扩展应用程序

    工具的使用--谷歌浏览器(chrome) (二) 1. 设置和下载方法 右上角菜单按钮 ⇒ 更多工具(more tools) ⇒ 扩展(Extensions) 打开该页面之后,会首先进入扩展(已安装应 ...

  7. 第6章 Spring MVC的数据转换、格式化和数据校验

    使用ConversionService转换数据 <%@ page language="java" contentType="text/html; charset=U ...

  8. TestNG环境搭建以及框架初识

    TestNG的英文为Test Next Generation, 听上去好像下一代测试框架已经无法正常命名了的样子,哈哈,言归正传,啥是TestNG呢,它是一套测试框架,在原来的Junit框架的思想基础 ...

  9. POJ3087 Shuffle'm Up

    题目: 现有字符串s1.s2.s12,其中s1.s2的长度为len,s12的长度为2*len. 是否可以通过一些操作使s1和s2转换合并成s12? 变换的操作规则如下: 假设s1=11111,s2=0 ...

  10. Citrix架构

    本图为citrix在Azure上的基本架构 包含了netscaler, VDA, DDC, AD四台服务器以及Azure SQL服务