HDU - 6314:Matrix (广义容斥)(占位)
the magical matrix is a matrix with n rows and m columns, and every single block should be painted either black or white.
Sam wants to know how many ways to paint the matrix, satisfied that the final matrix has at least A rows, B columns was painted completely black. Cause the answer might be too big, you only need to output it modulo 998244353.
InputThere might be multiple test cases, no more than 5. You need to read till the end of input.
For each test case, a line containing four integers n,m,A,B.
1≤n,m,A,B≤3000 1≤n,m,A,B≤3000
.
OutputFor each test case, output a line containing the answer modulo 998244353.
Sample Input
- 3 4 1 2
Sample Output
- 169
题意:给N*M的空白格子染色,求至少x行,至少y列被染色的方案数。
思路:不会,占位。
- #include<bits/stdc++.h>
- using namespace std;
- #define LL long long
- const int maxn = ;
- const int MOD = ;
- int n, m, A, B, ans;
- int C[maxn][maxn], two[maxn * maxn];
- int fa[maxn], fb[maxn];
- void Init() {
- for(int i = ; i < maxn; ++i) {
- for(int j = ; j <= i; ++j) {
- if(j == i || j == ) {
- C[i][j] = ;
- } else {
- C[i][j] = C[i - ][j - ] + C[i - ][j];
- if(C[i][j] >= MOD) {
- C[i][j] -= MOD;
- }
- }
- }
- }
- two[] = ;
- for(int i = ; i < maxn * maxn; ++i) {
- two[i] = two[i - ] * ;
- if(two[i] >= MOD) {
- two[i] -= MOD;
- }
- }
- }
- int main() {
- Init();
- while(~scanf("%d%d%d%d", &n, &m, &A, &B)) {
- ans = ;
- for(int i = A; i <= n; ++i) {
- fa[i] = ;
- for(int j = A; j < i; ++j) {
- fa[i] = (fa[i] + (LL)C[i][j] * fa[j]) % MOD;
- }
- fa[i] = - fa[i];
- if(fa[i] < ) {
- fa[i] += MOD;
- }
- }
- for(int i = B; i <= m; ++i) {
- fb[i] = ;
- for(int j = B; j < i; ++j) {
- fb[i] = (fb[i] + (LL)C[i][j] * fb[j]) % MOD;
- }
- fb[i] = - fb[i];
- if(fb[i] < ) {
- fb[i] += MOD;
- }
- }
- for(int i = A; i <= n; ++i) {
- LL tmp = (LL)fa[i] * C[n][i] % MOD;
- for(int j = B; j <= m; ++j) {
- ans = (ans + ((tmp * fb[j] % MOD) * C[m][j] % MOD) * two[(n - i) * (m - j)] % MOD) % MOD;
- }
- }
- printf("%d\n", ans);
- }
- return ;
- }
HDU - 6314:Matrix (广义容斥)(占位)的更多相关文章
- BZOJ2839 : 集合计数 (广义容斥定理)
题目 一个有 \(N\) 个 元素的集合有 \(2^N\) 个不同子集(包含空集), 现在要在这 \(2^N\) 个集合中取出若干集合(至少一个), 使得它们的交集的元素个数为 \(K\) ,求取法的 ...
- 【BZOJ3622】已经没有什么好害怕的了(动态规划+广义容斥)
点此看题面 大致题意: 有\(n\)个糖果和\(n\)个药片,各有自己的能量.将其两两配对,求糖果比药片能量大的组数恰好比药片比糖果能量大的组数多\(k\)组的方案数. 什么是广义容斥(二项式反演) ...
- P4491 [HAOI2018]染色 广义容斥 NTT 生成函数
LINK:染色 算是比较常规的广义容斥. 算恰好k个 可以直接转成至少k个. 至少k个非常的好求 直接生成函数. 设\(g_k\)表示至少有k个颜色是满足的 那么有 \(g_k=C(m,k)\frac ...
- bzoj 2839 集合计数 容斥\广义容斥
LINK:集合计数 容斥简单题 却引出我对广义容斥的深思. 一直以来我都不理解广义容斥是为什么 在什么情况下使用. 给一张图: 这张图想要表达的意思就是这道题目的意思 而求的东西也和题目一致. 特点: ...
- HDU - 6314 Matrix(广义容斥原理)
http://acm.hdu.edu.cn/showproblem.php?pid=6314 题意 对于n*m的方格,每个格子只能涂两种颜色,问至少有A列和B行都为黑色的方案数是多少. 分析 参考ht ...
- C - Visible Trees HDU - 2841 -莫比乌斯函数-容斥
C - Visible Trees HDU - 2841 思路 :被挡住的那些点(x , y)肯定是 x 与 y不互质.能够由其他坐标的倍数表示,所以就转化成了求那些点 x,y互质 也就是在 1 - ...
- HDU 5297 Y sequence 容斥 迭代
Y sequence 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5297 Description Yellowstar likes integer ...
- hdu 6053 trick gcd 容斥
http://acm.hdu.edu.cn/showproblem.php?pid=6053 题意:给定一个数组,我们定义一个新的数组b满足bi<ai 求满足gcd(b1,b2....bn)&g ...
- HDU 4609 3-idiots FFT+容斥
一点吐槽:我看网上很多分析,都是在分析这个题的时候,讲了半天的FFT,其实我感觉更多的把FFT当工具用就好了 分析:这个题如果数据小,统计两个相加为 x 的个数这一步骤(这个步骤其实就是求卷积啊),完 ...
- HDU 4336 Card Collector(容斥)
题意:要收集n种卡片,每种卡片能收集到的概率位pi,求收集完这n种卡片的期望.其中sigma{pi} <=1; 思路:容斥原理.就是一加一减,那么如何算期望呢.如果用二进制表示,0表示未收集到, ...
随机推荐
- git使用基础
一.git介绍 git是由 Linus 开发的一种“分布式版本控制”软件,而在此之前,版本控制基本上都是“集中式版本控制”,如:CVS,SVN 等.两者的区别: 1. "集中式版本控制系统& ...
- Spring @Qualifier l转
当候选 Bean 数目不为 1 时的应对方法 在默认情况下使用 @Autowired 注释进行自动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个.当找不到一个匹配的 Bean ...
- Django学习笔记之Django视图View
一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. ...
- CSS3鼠标悬停8种动画特效
在线演示 本地下载
- hydra简单使用示例
本内容为网上收集整理,仅作为备忘!! hydra简单使用示例: 破解https: # hydra -m /index.php -l muts -P pass.txt 10.36.16.18 https ...
- vim终端复制_不开启xterm_clipboard的解决方式
后来发现了另外的方法,比这个更好==> 完美解决vim在终端不能复制的问题 http://www.cnblogs.com/cheerupforyou/p/6958695.html 使用xsehl ...
- MySQL二进制日志文件过期天数设置说明
今天在处理业务库中二进制文件的时候,想更改二进制文件的过期天数,发现日期如果设置成2位以上的整数.都会出现如下的警告.不能成功的设置过期日期天数.MySQL版本从5.1到5.5都是一样的. mysql ...
- 数组排序array_multisort
array_multisort --对多个数组或者多维数组进行排序[参考:secure.php.net] 说明: bool array_multisort ( array &$array1 [ ...
- Java中List集合的常用方法
List接口是继承Collection接口,所以Collection集合中有的方法,List集合也继承过来. 这篇文章就不讲继承Collection接口的那些方法了 https://www.cnblo ...
- SPFA算法 - Bellman-ford算法的进一步优化
2017-07-27 22:18:11 writer:pprp SPFA算法实质与Bellman-Ford算法的实质一样,每次都要去更新最短路径的估计值. 优化:只有那些在前一遍松弛中改变了距离点的 ...