题意

有一个n*m的矩形,里面有k个炸弹,给出每个炸弹的坐标,计算在n*m的矩形中有多少子矩形内是不包含炸弹的。

分析

场上很是懵逼,赛后问学长说是容斥定理?一脸懵逼。。容斥不是初中奥数用在集合上的东西吗(雾

先贴一下容斥的学习博客(貌似是我学长?):https://blog.csdn.net/usher_ou/article/details/68927439

还有这个题的参考博客:https://blog.csdn.net/lyg_air/article/details/77606691

侵删。

首先我们来看一个预备知识:

对于一个n*m的矩阵,它的子矩阵有多少个?我们可以看作一个组合的问题:在横着的n+1条边里选出两条来,从竖着的m+1条边里选出两条一共有多少选法?显然是C(2,n+1)*C(2,m+1)=n(n+1)/2*m(m+1)/2。

容斥定理就是通过加加减减来求一个并集。对于这个题我们可以通过考虑它的逆问题来用容斥定理,它的逆问题显然是:有多少子矩阵包含至少一个炸弹。那么就是先把只含有一个炸弹的加起来,再减去含有两个炸弹的,再加上含有三个炸弹的····

这是这个题的主要思路。那么还有两个小问题

1 怎么枚举炸弹的数量?因为K最多只要20那么可以通过二进制进行枚举

2 怎么计算包含某些数目炸弹的矩阵数?和上面计算n*m子矩阵的方法类似(一样),也是通过组合的方法。来看这张图

比如要计算包含这三个点的举行数目,我们可以通过计算这三个点最大最小的横纵坐标确定一个范围,然后从这个范围外选边就可以了,写出来就是:minx*miny*(n-maxx+1)*(m-maxy+1);

嗯,就是这样~A掉人生第一个容斥~

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std;
typedef long long LL;
typedef unsigned long long ull;
const int maxn=+;
const int INF=;
struct Node{
long long x,y;
}node[maxn];
long long T,n,m,k; int main(){
scanf("%d",&T);
for(int t=;t<=T;t++){
scanf("%lld%lld%lld",&n,&m,&k);
for(int i=;i<k;i++){
scanf("%d%d",&node[i].x,&node[i].y);
}
LL ans=n*(n+)/*m*(m+)/;
for(int i=;i<(<<k);i++){
LL minx=INF,miny=INF,maxx=-INF,maxy=-INF;
int cnt=;
for(int j=;j<k;j++){
if(<<j&i){
cnt++;
minx=min(minx,node[j].x);
miny=min(miny,node[j].y);
maxx=max(maxx,node[j].x);
maxy=max(maxy,node[j].y);
}
}
LL res=minx*miny*(n-maxx+)*(m-maxy+);
//cout<<res<<endl;
if(cnt%)
ans-=res;
else
ans+=res;
}
printf("%lld\n",ans);
}
return ;
}

Gym 101350G - Snake Rana的更多相关文章

  1. Gym - 101350G Snake Rana(容器原理)

    Old Macdonald wants to build a new hen house for his hens. He buys a new rectangular area of size N  ...

  2. 组队赛Day1第一场 GYM 101350 G - Snake Rana (容斥)

    [题意] 给一个N×M的矩阵, K个地雷的坐标.求不含地雷的所有矩形的总数. T组数据. N M都是1e4,地雷数 K ≤ 20 Input 3 2 2 1 2 2 6 6 2 5 2 2 5 100 ...

  3. 容斥 或者 单调栈 hihocoder #1476 : 矩形计数 和 G. Snake Rana 2017 ACM Arabella Collegiate Programming Contest

    先说一个简单的题目(题目大意自己看去,反正中文):hihocoder上的:http://hihocoder.com/problemset/problem/1476 然后因为这个n和m的矩阵范围是100 ...

  4. GYM 101350 G

    G. Snake Rana time limit per test 4.0 s memory limit per test 256 MB input standard input output sta ...

  5. 2017 ACM Arabella Collegiate Programming Contest div2的题,部分题目写个题解

    F. Monkeying Around   维护点在多少个线段上 http://codeforces.com/gym/101350/problem/F 题意:有m个笑话,每个笑话的区间是[L, R], ...

  6. 2017 ACM Arabella Collegiate Programming Contest(solved 9/13, complex 12/13)

    A.Sherlock Bones 题意: 给出长度为n的01串,问f(i,j)=f(j,k),(i<j<k)的i,j,k取值种数.其中f(i,j)表示[i,j]内1的个数, 且s[j]必须 ...

  7. codeforce gym/100495/problem/F Snake++——DFS应用

    emmmm.... 在被新生暴打后,我花了很久才补出这道DFS.由于WA1检查了半天,最后竟然是输出少了一个:   ,心态小崩. 这里普通的dfs算出的连通区域并不能直接当做最后的答案.所以需要类似模 ...

  8. [LeetCode] Design Snake Game 设计贪吃蛇游戏

    Design a Snake game that is played on a device with screen size = width x height. Play the game onli ...

  9. ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力

     Gym 101047M Removing coins in Kem Kadrãn Time Limit:2000MS     Memory Limit:65536KB     64bit IO Fo ...

随机推荐

  1. Wix是什么?

    Wix是Windows Installer XML的简称,其通过类XML文件格式来指定了用于创建Windows Installer安装包数据库的元素.关于Wix的详细介绍,http://wixtool ...

  2. hexo多主题切换

    今天看到一个朋友在github上面的issue 大概问题就是怎么在不同的电脑上面使用 git有个这么个东西Submoudle中文叫做子模块 具体使用教程看这里Git-工具-子模块 这里只说怎么搞hex ...

  3. POJ1160 Post Office (四边形不等式优化DP)

    There is a straight highway with villages alongside the highway. The highway is represented as an in ...

  4. c#模拟键盘输入

    System.Windows.Forms.SendKeys.SendWait("j");

  5. LibreOJ β Round #2 题解

    LibreOJ β Round #2 题解 模拟只会猜题意 题目: 给定一个长为 \(n\) 的序列,有 \(m\) 次询问,每次问所有长度大于 \(x\) 的区间的元素和的最大值. \(1 \leq ...

  6. TortoiseGit不同分支合并代码2

    现在有主分支master和分支day2.现在要把day2上的变更合并到主分支master上! 1.首先切换到目标分支master上. 说明当前分支是master分支. 2.在master分支上查看提交 ...

  7. kafka ksql && docker 安装试用

    备注: 使用docker 模式进行安装   1. 准备docker 环境(需要docker-compose)      docker 的安装不需要进行多描述了,直接yum 或者源码编译也可以     ...

  8. dpkg安装工具

    dpkg --info "软件包名" --列出软件包解包后的包名称. dpkg -l --列出当前系统中所有的包.可以和参数less一起使用在分屏查看. (类似于rpm -qa) ...

  9. emqtt 3 (我要subscribe 这个topic)

    这一次,主要分析client subscribe 某个topic 的处理流程. 由protocol开始 是的,还是要从protocol开始,至于为什么,之前就说过了. subscribe 类型的pac ...

  10. codeforce 985B Switches and Lamps(暴力+思维)

    Switches and Lamps time limit per test 3 seconds memory limit per test 256 megabytes input standard ...