题目链接: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. 【ACM】hdu_zs2_1004_Problem D _201308030856

    Problem D Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)Total Subm ...

  2. [bzoj1660][Usaco2006 Nov]Bad Hair Day_单调栈

    Bad Hair Day bzoj-1660 Usaco-2006 Nov 题目大意:n头牛站成一列,每头牛向后看.f[i]表示第i头牛到第n头牛之间有多少牛,使得这些牛都比i矮,且中间没有比i高的牛 ...

  3. [bzoj3505][CQOI2014]数三角形_组合数学

    数三角形 bzoj-3505 CQOI-2014 题目大意:给你一个n*m的网格图,问你从中选取三个点,能构成三角形的个数. 注释:$1\le n,m\le 1000$. 想法:本来是想着等中考完了之 ...

  4. 用 Python 理解 Web 并发模型

    用 Python 理解 Web 并发模型 http://www.jianshu.com/users/1b1fde012122/latest_articles   来源:MountainKing 链接: ...

  5. Welcome to the Real World

     Welcome to the Real World Gregor Hohpe EnginEERS liKE pRECiSion, especially software engineers who ...

  6. Chromium多线程模型设计和实现分析

    Chromium除了远近闻名的多进程架构之外,它的多线程模型也相当引人注目的.Chromium的多进程架构是为了解决网页的稳定性问题,而多线程模型则是为了解决网页的卡顿问题.为了达到这个目的,Chro ...

  7. 阿里巴巴集团2014年校园招聘系统project师北京笔试题

    第一部分 单选题(前10题,每题2分;后10题,每题3分;共50分.选对得满分,选错倒扣一分,不选得0分.) 1.字符串"alibaba"有 个不同的排列. A. 5040 B. ...

  8. Android的编译环境--Build系统【转】

    本文转载自:http://blog.csdn.net/kitty_landon/article/details/60764232 Android是一个庞大的系统,包含太多的模块,各种模块的类型也有10 ...

  9. 摘要提取算法——本质上就是pagerank,选择rank最高的句子作为摘要,如果结合word2vec应该有非常好的效果

    最近需要做一些文本摘要的东西,选取了TextRank(论文参见<TextRank: Bringing Order into Texts>)作为对比方案,该方案可以很方便的使用Python相 ...

  10. poj--2553--The Bottom of a Graph (scc+缩点)

    The Bottom of a Graph Time Limit : 6000/3000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Oth ...