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/ ...
随机推荐
- 【模板】平衡树——Treap和Splay
二叉搜索树($BST$):一棵带权二叉树,满足左子树的权值均小于根节点的权值,右子树的权值均大于根节点的权值.且左右子树也分别是二叉搜索树.(如下) $BST$的作用:维护一个有序数列,支持插入$x$ ...
- html5拖动滑块
html5中input有增加type=range.这为拖动滑块提供了很大的便利.下面是他的属性: <!DOCTYPE html> <html lang="en"& ...
- Linux scp 命令使用方法
scp 命令: 1.将本地文件拷贝到远程:scp 文件名 用户名@计算机IP或者计算机名称:远程路径 2.从远程将文件拷回本地:scp 用户名@计算机IP或者计算机名称:文件名 本地路径 3.将本 ...
- JMeter--PerfMon Metrics Collector监控内存及CPU
1.需要准备的软件及插件 ServerAgent-2.2.1.zip JMeterPlugins-Standard-1.3.1.zip 2.jmeter上JMeterPlugins-Standard- ...
- ubuntu 文件解压命令
[解压.zip文件] unzip ./FileName.zip //前提是安装了unzip 安装unzip命令:sudo apt-get install unzip 卸载unzip软件 命令:sudo ...
- 7.html超链接的使用
<html> <head> <title>第七课网页标签</title> <meta charset="utf-8"> ...
- vue从入门到开发--3-基础语法
一:v-text指令 指令v-text:可通过该指令绑定动态数据(动态数据我觉得可以是从服务器请求下来的数据,保存在data里边,然后动态显示在文档中,因为是一个一个的组件,数据应该不会很多吧,就只有 ...
- Android ScrollView嵌套RecyclerView导致在三星s8曲面屏显示不全问题
当RecyclerView适配显示不全时可以单独给其嵌套一个相对布局!!!(必须是相对布局),这样在曲面屏手机就可以全部显示出来如下图所示 <RelativeLayout android:lay ...
- 不同版本的 Tomcat 设置用户名密码 的方法
Tomcat : tomcat根目录\conf\tomcat-users.xml,找到 <tomcat-users> 标签,在后面添加 <user username="ad ...
- 推荐一个yaml文件转json文件的在线工具
YAML的全称是YAML Ain't Markup Language,是一种简洁的非标记语言,以数据为中心,使用空白,缩进,和分行组织数据,从而使得表示更加简洁易读. YAML如今广泛应用于微服务开发 ...