题目链接:https://uva.onlinejudge.org/external/118/11806.pdf

题意:

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

分析:

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

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

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

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

 #include <bits/stdc++.h>

 using namespace std;

 const int MOD = ;
const int maxn = ;
int C[maxn+][maxn+]; int main()
{
memset(C,,sizeof(C));
C[][] = ; for(int i=;i<=maxn;i++) {
C[i][] = C[i][i] = ;
for(int j=;j<i;j++)
C[i][j] = (C[i-][j]+C[i-][j-])%MOD;
} int t;
cin>>t;
int kase = ;
while(t--) {
int n,m,k,sum = ;
cin>>n>>m>>k;
for(int S=;S<;S++) {
int b = ;
int r = n;
int c = m;
if(S&) {r--;b++;}
if(S&) {r--;b++;}
if(S&) {c--;b++;}
if(S&) {c--;b++;}
if(b&) sum = (sum + MOD - C[r*c][k]) % MOD;
else sum = (sum + C[r*c][k])%MOD;
}
printf("Case %d: %d\n",kase++,sum);
} return ;
}

Uva 11806 拉拉队的更多相关文章

  1. UVa 11806 拉拉队(容斥原理)

    https://vjudge.net/problem/UVA-11806 题意: 在一个m行n列的矩形网格里放k个相同的石子,有多少种方法?每个格子最多放一个石子,所有石子都要用完,并且第一行.最后一 ...

  2. uva 11806 Cheerleaders

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

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

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

  4. UVA 11806 组合数学+容斥

    UVA: https://vjudge.net/problem/UVA-11806 AC代码 #include <bits/stdc++.h> #define pb push_back # ...

  5. uva 11806 Cheerleaders (容斥)

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

  6. UVA 11806 Cheerleaders dp+容斥

    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 (容斥原理)

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

  9. Cheerleaders UVA - 11806

    题目大意是: 在一个m行n列的矩形网格中放置k个相同的石子,问有多少种方法?每个格子最多放一个石子,所有石子都要用完,并且第一行.最后一行.第一列.最后一列都要有石子. 容斥原理.如果只是n * m放 ...

随机推荐

  1. tp 查询

  2. JS电话、手机号码验证

    function isTelephone(inpurStr) {            var partten = /^0(([1,2]\d)|([3-9]\d{2}))-\d{7,8}$/;     ...

  3. js、jquery的入口函数

    js的入口函数写法: window.onload = function() { }; 如果文件中有多个window.onload入口函数,则只会执行最后一个,之前的入口函数没有用. jquery的入口 ...

  4. c++ 迭代器失效学习 effective-STL 9条

    https://www.cnblogs.com/newbeeyu/p/6883122.html  结合 effective  STL 条款9 https://www.cnblogs.com/fnlin ...

  5. 《我在谷歌大脑见习机器学习的一年:Node.js创始人的尝试笔记》阅读笔记

    文章来源:https://www.toutiao.com/i6539751003690893828/?tt_from=weixin_moments&utm_campaign=client_sh ...

  6. 打开fiddler 电脑无法上网问题

    Fiddler下Firefox提示“您的连接并不安全”的解决办法 一.版本信息 Firefox 最新版本V46.0.1 Fiddler 最新版本V4.6.2.3 二.错误信息 开启fiddlers的h ...

  7. spring boot基本认识

    大家眼中的spring boot:https://www.zhihu.com/question/39483566-------------------------------------------- ...

  8. Android多线程源码学习笔记一:handler、looper、message、messageQueue

    最近在学习Android多线程相关知识的源码,现在把自己的笔记整理一下,写出来加深印象. Android多线程通讯的核心是handler.looper.message.messageQueue,这篇文 ...

  9. ecshop点击订购、加入按钮没反应的解决方法

    今天做ecshop站的时候,测试数据,发现点击订购.加入按钮都没反应,网上搜索,有些人说是修改了common.js,我将原始版本复原也没反映.后来重新安装ecshop,仔细研究发现,原来头部文件pag ...

  10. attr()与setAttribute()的区别

    先看红色标注的: 这里传过来的this是个元素节点,因此currentTr也得用获取节点的方式parentNode去获取,而不能写parent(),这是第一个需要注意的地方. 第二个问题,就是怎么给c ...