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; ][]; ,,, ...
随机推荐
- share point CSOM 客户端模式 创建表 增删改查
需要引用:Microsoft.SharePoint.Client ascx: <h4>CSOM所有表名</h4> <table> <tr> <td ...
- java代码实现JVM栈溢出,堆溢出
参考博客:http://www.cnblogs.com/tv151579/p/3647238.html 背景知识: 栈存放什么:栈存储运行时声明的变量——对象引用(或基础类型, primitive)内 ...
- sa learning
后缀数组之前一直在给队友搞,但是这个类太大了,预感到青岛八成会有,于是自己也学习一下,记录一下做题的历程 所用的模板暂时来自于队友的倍增nlogn da算法 int t1[maxn] , t2[max ...
- 自定义ajax
// 动态添加script获取里面的数据,,可实现跨域,不跨的当然也可以 getFile:function(params){ try{ //创建script标签 var cbName=params.c ...
- django框架搭建web服务
一.工具 环境:windows 7 python 2.7.7 下载地址:https://www.python.org/downloads/release/python-2713/ ps:这 ...
- HtmlAgilityPach基本使用方法
//过滤html标签 static void InnerText() { HtmlWeb htmlWeb = new HtmlWeb(); HtmlDocument doc = htmlWeb.Loa ...
- Unity教程之-UGUI一个优化效率小技巧
无意间发现了一个小技巧.如下图所示,可以发现UGUI的Image组件的RaycastTarget勾选以后会消耗一些效率,为了节省效率就不要勾选它了,不仅Image组件Text组件也有这样的问题. 一般 ...
- LabVIEW之生产者/消费者模式--队列操作
LabVIEW之生产者/消费者模式--队列操作 彭会锋 本文章主要是对学习LabVIEW之生产者/消费者模式的学习笔记,其中涉及到同步控制技术-队列.事件.状态机.生产者-消费者模式,这几种技术在在本 ...
- MFC sendmessage实现进程间通信
用sendmessage实现进程间通信. 1.WM_COPYDATA实现进程间通信 实现方式是发送WM_COPYDATA消息. 发送程序: LRESULT copyDataResult; //copy ...
- ASP.NET MVC添加Action就找不到
这个诡异的bug困扰我好多回了,今天又碰到了,就把它记录下来吧. 不要随便改变web项目的编译路径 Output让它保持原样就好了...