GYM 101350 G
4.0 s
256 MB
standard input
standard output
Old Macdonald wants to build a new hen house for his hens. He buys a new rectangular area of size N by M. The night before he builds the hen house, snake Rana devises an evil plan to plant bombs in K distinct cells in the area to kill the hens and eat them for dinner later.
The morning of, Old Macdonald notices that each of the K cells, where snake Rana planted a bomb, have a marking on them. That won’t stop him though, all he must do is build the hen house in an area with no bombs.
Assume that rows are numbered from top to bottom, and columns are numbered from left to right. Old Macdonald now wants to know the number of ways he can choose sub-rectangles of top left coordinates (x1, y1) and bottom right coordinates (x2, y2) (x1 ≤ x2) (y1 ≤ y2) such that there are no bombs in the sub rectangle.
The first line of input is T – the number of test cases.
The first line of each test case is three integers N, M, and K (1 ≤ N, M ≤ 104) (1 ≤ K ≤ 20).
The next K lines each contains distinct pair of integers x, y (1 ≤ x ≤ N) (1 ≤ y ≤ M) - where (x, y) is the coordinate of the bomb.
For each test case, output a line containing a single integer - the number of sub-rectangles that don’t contain any bombs.
3
2 2 1
2 2
6 6 2
5 2
2 5
10000 10000 1
1 1
5
257
2500499925000000
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <string>
#include <deque>
#include <set>
#include <queue>
using namespace std;
#define ll long long
#define N 10009
#define gep(i,a,b) for(int i=a;i<=b;i++)
#define gepp(i,a,b) for(int i=a;i>=b;i--)
#define gep1(i,a,b) for(ll i=a;i<=b;i++)
#define gepp1(i,a,b) for(ll i=a;i>=b;i--)
#define mem(a,b) memset(a,b,sizeof(a))
#define P pair<int,int>
#define inf 10000009
struct Node{
ll x,y;
}node[];
int main()
{
int t,k;
ll n,m;
scanf("%d",&t);
while(t--)
{
scanf("%lld%lld%d",&n,&m,&k);//开始时k %lld ,t直接变为0了
ll ans=n*(n+)/*m*(m+)/;
//一共ans个,要在减去含有炸弹的,容斥定理
//含有炸弹的=仅含有一个的-含有两个的+含有三个的-……
/*
要计算几个集合并集的大小,我们要先将所有单个集合的大小
计算出来,然后减去所有两个集合相交的部分,
再加回所有三个集合相交的部分,
再减去所有四个集合相交的部分,依此类推,
一直计算到所有集合相交的部分。
*/
gep(i,,k-){
scanf("%lld %lld",&node[i].x,&node[i].y);
}
for(int i=;i<(<<k);i++)//二进制枚举所有的情况
{
ll m1=inf,m2=inf,m3=-,m4=-;
int cnt=;
gep(j,,k-){
if(i>>j&){//i的j位是1吗
m1=min(m1,node[j].x);
m2=min(m2,node[j].y);
m3=max(m3,node[j].x);
m4=max(m4,node[j].y);
cnt++;//有几个炸弹
}
}
//m1 :横坐标的最小值 m2 :纵坐标的最小值
//m3 :横坐标的最大值 m4 :纵坐标的最大值
//一个矩形由左上角 和右下角 决定
//m1*m2 左上的位置数 ,(n-m3+1)*(m-m4+1):右下的位置数
ll ret=m1*m2*(n-m3+)*(m-m4+);
if(cnt&) ans-=ret;
else ans+=ret;
}
printf("%lld\n",ans);
}
return ;
}
GYM 101350 G的更多相关文章
- 组队赛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 ...
- [codeforces/gym/101350/L]维护“凸包”
题目链接:http://codeforces.com/gym/101350/problems 给定n个墙,每个墙有一个高度,要支持动态修改墙的高度和查询这个“容器”能盛多少水. (队友)观察发现,能盛 ...
- Codeforces Gym 100513G G. FacePalm Accounting
G. FacePalm Accounting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513 ...
- Codeforces Gym 100637G G. #TheDress 暴力
G. #TheDress Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100637/problem/G ...
- Codeforces Gym 100513G G. FacePalm Accounting 暴力
G. FacePalm Accounting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513 ...
- Gym - 101147G G - The Galactic Olympics —— 组合数学 - 第二类斯特林数
题目链接:http://codeforces.com/gym/101147/problem/G G. The Galactic Olympics time limit per test 2.0 s m ...
- Gym 100952 G. The jar of divisors
http://codeforces.com/gym/100952/problem/G G. The jar of divisors time limit per test 2 seconds memo ...
- Codeforces Gym 100203G G - Good elements 标记暴力
G - Good elementsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/ ...
- Codeforces Gym 100203G G - Good elements 暴力
G - Good elementsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/ ...
随机推荐
- 牛客寒假6-E.海啸
链接:https://ac.nowcoder.com/acm/contest/332/E 题意: 有一个沿海地区,可以看作有n行m列的城市,第i行第j列的城市海拔为h[i][j]. 由于沿海,所以这个 ...
- Oracle 云计算
OCM(oracle 应用整合服务器,人工智能) XCM(exdata) BCM (大数据机器) 云运维人员 ,不需要本地人员
- Django 的简单ajax
需要通过ajax实现局部刷新 js代码 $('#guo-sou-ajax').click(function(){ #获取id为guo-sou-ajax点击后的信号 console.log($(this ...
- jQuery offset()源码解析
首先是原型上的offset方法,根据arguments判断到底是取值还是设值.如果是设置,就遍历调用静态方法jQuery.offset.setOffset 如果是取值.那么就是从"var d ...
- Asp.Net实现记录历史访问人数和当前在线人数
************************************在Global.asax中如下************************ <%@ Import Namespace= ...
- 海康威视采集卡结合opencv使用(两种方法)-转
(注:第一种方法是我的原创 ^_^. 第二种方法是从网上学习的.) 第一种方法:利用 板卡的API: GetJpegImage 得到 Jpeg 格式的图像数据,然后用opencv里的一个函数进行解码 ...
- android 常用第三方github工程
这里有个汇总的网址:http://androidxy.com/zh/page/latest/-1/0 数据库:greenDao 参考:GreenDao3.2的使用 控件注解:Butterknife 图 ...
- 4G牌照影响
与3G牌照发放整整讨论了10年不同,4G牌照发放在2009年3G规模建设4年后就进行了发放,也颇匹配于行业的加速度.那么,4G到底会在哪些方面.在何种程度上改变中国呢?其实,4G的影响可能没有那么大, ...
- Apache Kafka框架学习
背景介绍 消息队列的比较 kafka框架介绍 术语解释 文件存储 可靠性保证 高吞吐量实现 负载均衡 应用场景 背景介绍: kafka是由Apache软件基金会维护的一个开源流处理平台,由scala和 ...
- cat 参数
-A 相当于-vET的整合参数 -E 将结尾的换行符$显示出来 -n 显示行号 -T 将tab键以^T显示出来 -v 列出一些看不出来的特殊字符