HDU - 6513 Reverse It (SYSU校赛C题)(组合数学+容斥)
题意:给定一个n*m的矩阵,可以选择至多两个子矩阵将其反转,求能形成多少种不同的矩阵。
任选一个矩阵有$C_{n+1}^{2}C_{m+1}^{2}$种方法,任选两个不同的矩阵有$C_{C_{n+1}^{2}C_{m+1}^{2}}^{2}$种方法,但其中有重复的,需要去重。
重复的情况一共有以下四种:
第一种,两矩阵拼合成一个矩阵,这样的图形有$C_{n+1}^{2}C_{m+1}^{2}$个,重复度(出现的次数)为(n+m-2)
第二种,形成的两个矩阵在同一行或同一列,有$C_{n+1}^{4}C_{m+1}^{2}+C_{n+1}^{2}C_{m+1}^{4}$个(任选四行两列或两行四列)
第三种,L字形,有$4C_{n+1}^{3}C_{m+1}^{3}$个(任选三行三列+四种位置)
第四种,两矩阵对角,有$2C_{n+1}^{3}C_{m+1}^{3}$个(同上)
第二、三、四种的重复度均为3。
其余情况的重复度为1。
最后还要加上原矩阵的贡献,即答案要加上1。
所以答案为$C_{C_{n+1}^{2}C_{m+1}^{2}}^{2}-(n+m-3)C_{n+1}^{2}C_{m+1}^{2}-2(C_{n+1}^{4}C_{m+1}^{2}+C_{n+1}^{2}C_{m+1}^{4}+6C_{n+1}^{3}C_{m+1}^{3})+1$
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m;
ll C(ll n,ll m) {ll ret=; for(ll i=; i<=m; ++i)ret=ret*(n-i+)/i; return ret;}
int main() {
while(scanf("%lld%lld",&n,&m)==) {
printf("%lld\n",C(C(n+,)*C(m+,),)-(C(n+,)*C(m+,)*+C(n+,)*C(m+,)+C(n+,)*C(m+,))*-C(n+,)*C(m+,)*(n+m-)+);
while(n--)scanf("%*s");
}
return ;
}
HDU - 6513 Reverse It (SYSU校赛C题)(组合数学+容斥)的更多相关文章
- HDU - 6521 Party (SYSU校赛K题)(线段树)
题目链接 题意:n个人排成一列,一开始他们互不认识,每次选[l,r]上的人开party,使他们互相认识,求出每次party之后新互相认识的人的对数. 思路:把“互相认识”变成单向连边,只考虑左边的人对 ...
- 15ecjtu校赛1006 (dfs容斥)
Problem Description 在平面上有一个n*n的网格,即有n条平行于x轴的直线和n条平行于y轴的直线,形 成了n*n个交点(a,b)(1<=a<=n,1<=b<= ...
- PKU2018校赛 H题 Safe Upper Bound
http://poj.openjudge.cn/practice/C18H 题目 算平均数用到公式\[\bar{x}=\frac{x_1+x_2+x_3+\cdots+x_n}{n}\] 但如果用in ...
- HDU 5768Lucky7(多校第四场)容斥+中国剩余定理(扩展欧几里德求逆元的)+快速乘法
地址:http://acm.hdu.edu.cn/showproblem.php?pid=5768 Lucky7 Time Limit: 2000/1000 MS (Java/Others) M ...
- 2018WFU校赛B题
我们在ACM的题目中已经了解了什么是ACM了,ACM还是很残酷的了(ಥ _ ಥ),那么现在你就要解决一个ACM最简单的题了,简单到省赛和区域赛都不会出这种简单的题.ls很强,即使每年都在ACM这个大坑 ...
- HDU 4970(杭电多校#9 1011题)Killing Monsters(瞎搞)
题目地址:HDU 4970 先进行预处理.在每一个炮塔的火力范围边界标记一个点. 然后对每一个点的伤害值扫一遍就能算出来. 然后在算出每一个点到终点的总伤害值,并保存下来,也是扫一遍就可以. 最后在询 ...
- HDU 4968(杭电多校#9 1009题)Improving the GPA (瞎搞)
题目地址:HDU 4968 这题的做法是全部学科的学分情况枚举,然后推断在这样的情况下是否会符合平均分. 直接暴力枚举就可以. 代码例如以下: #include <cstring> #in ...
- 福建工程学院第十四届ACM校赛J题题解
第六集,想不到你这个浓眉大眼的都叛变革命了 题意: 给你两个只包含01的字符串S和T,问你在允许一次错误的情况下,T是否能成为S的子串 思路: 这个问题的解法挺多,我是用fft匹配的,也比较简单,针对 ...
- 校赛E题递归形式
#include<stdio.h> #include<string.h> using namespace std; typedef long long ll; ][]; ,,, ...
随机推荐
- Java实习一
简单的二元一次方程求解 import java.lang.Math; import java.util.Scanner; public class Solve{ public static void ...
- jquery tmpl模板
之前用模板渲染都是用angular,无意间发现了jquery tmpl这种轻量级,其文档在这里 官方解释对该插件的说明:将匹配的第一个元素作为模板,render指定的数据,签名如下: .tmpl([d ...
- ZooKeeper原理 --------这可能是把ZooKeeper概念讲的最清楚的一篇文章
相信大家对 ZooKeeper 应该不算陌生,但是你真的了解 ZooKeeper 是什么吗?如果别人/面试官让你讲讲 ZooKeeper 是什么,你能回答到哪个地步呢? 我本人曾经使用过 ZooKee ...
- 捕获enter键盘事件绑定到登录按钮
/** *捕获enter键盘事件绑定到登录按钮 */ function keyLogin(event) { if (event.keyCode == 13) { document.getElement ...
- Linux下记录所有用户的登录和操作日志
Linux下记录所有用户的登录和操作日志 一般我们可以用history命令来查看用户的操作记录,但是这个命令不能记录是哪个用户登录操作的,也不能记录详细的操作时间,且不完整:所以误操作而造成重要的 ...
- Ansible 小手册系列 十(包含和角色)
一.包含 (include) 使用include模块来包含foo文件 tasks: - include: foo.yml --- foo.yml - name: test foo command: e ...
- php中mysql_fetch_row() 和mysql_fetch_array之间有什么区别
mysql_fetch_row是从结果集取出1行数组,作为枚举 mysql_fetch_array是从结果集取出一行数组作为关联数组,或数字数组,两者兼得eg:$sql="select ab ...
- Markdown_04_折叠语法
目录 一.折叠语法 参考资料 一.折叠语法 主要使用的是 html5的 details标签 (1)示例如下: <details> <summary>折叠文本</summa ...
- C/C++文件指针偏移
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- trigger 触发器(mysql)
/* 触发器 tigger 引出触发器: 在进行数据库应用软件的开发的时候,我们有时候会碰到表中的某些数据改变,同事希望引起其他相关数据改变的需求,这时候就需要使用触发器. 运用触发器可以简化程序,增 ...