题目链接:https://vjudge.net/problem/Gym-101991D

具体思路:首先看数据范围,暴力肯定不可以,可以下离散化,然后先求出离散化后每一个点到(1,1)的符合题目的要求的个数,然后再按照一块一块的求,打个比方,离散化后

(1,1) (1,2)(1,3)

(2,1) (2,2) (2,3)

(3,1) (3,2) (3,3)

如果(1,1)这个点满足,那么求一下这个点到(2,2)的面积(面积是2,这里计算的是整个方块里面的,不包括边界),这一块肯定是满足的,然后每一个点都这样判断,这样就可以把所有的符合面积都求出来了。

AC代码:

#include<iostream>
#include<stack>
#include<iomanip>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
#include<vector>
#include<algorithm>
#include<stdio.h>
using namespace std;
# define inf 0x3f3f3f3f
# define ll long long
# define maxn 1000+100
# define int ll
ll dp[maxn][maxn],x[maxn],y[maxn];
struct node
{
ll x,y;
} q[maxn];
signed main()
{
// freopen("dull.in","r",stdin);
int T;
scanf("%lld",&T);
while(T--)
{
map<int,int>visx;
map<int,int>visy;
memset(dp,0,sizeof(dp));
ll n,m,k;
int num1=0,num2=0;
scanf("%lld%lld%lld",&n,&m,&k);
for(int i=1; i<=k; i++)
{
scanf("%lld %lld",&q[i].x,&q[i].y);
x[i]=q[i].x;
y[i]=q[i].y;
}
sort(x+1,x+k+1);
sort(y+1,y+k+1);
if(k>=1)
visx[x[1]]=++num1;
for(int i=2; i<=k; i++)
{
if(x[i]!=x[i-1])
{
visx[x[i]]=++num1;
x[num1]=x[i];//;离散化的过程,注意这里的x存的变成了新的离散化后的点了
}
}
if(k>=1)
visy[y[1]]=++num2;
for(int i=2; i<=k; i++)
{
if(y[i]!=y[i-1])
{
visy[y[i]]=++num2;
y[num2]=y[i];
}
}
for(int i=1; i<=k; i++)
{
dp[visx[q[i].x]][visy[q[i].y]]=1;
}
for(int i=1; i<=num1; i++)
{
for(int j=1; j<=num2; j++)
{
dp[i][j]+=dp[i][j-1]+dp[i-1][j]-dp[i-1][j-1];
}
}
ll ans=0;
x[num1+1]=n+1;
y[num2+1]=m+1;//加了这两个点,是为了防止最后边界上的点算不上。
for(int i=1; i<=num1; i++)
{
for(int j=1; j<=num2; j++)
{
if(dp[i][j]%2)
{
ans+=(x[i+1]-x[i])*(y[j+1]-y[j]);
}
}
}
printf("%lld %lld\n",ans,n*m-ans);
}
return 0;
}

Dull Chocolates Gym - 101991D 离散化 前缀和的更多相关文章

  1. P2344 奶牛抗议 离散化+前缀和+动态规划+树状数组

    [题目背景] Generic Cow Protests, 2011 Feb [题目描述] 约翰家的N 头奶牛正在排队游行抗议.一些奶牛情绪激动,约翰测算下来,排在第i 位的奶牛的理智度为Ai,数字可正 ...

  2. Gym - 101911B Glider(前缀和+二分)

    传送门:点我 A plane is flying at a constant height of hh meters above the ground surface. Let's consider ...

  3. 2019 ICPC Asia Nanchang Regional E Eating Plan 离散化+前缀和

    题意: 给你n个盘子,这n个盘子里面分别装着1!到n!重量的食物,对于每一个询问k,找出一个最短的区间,使得区间和 mod 998857459 大于或等于k 盘子数量 n<=1e5 询问次数 m ...

  4. NOIP2018 20天训练

    Day 0 2018.10.20 其实写的时候已经是Day 1了--(凌晨两点) 终于停课了,爽啊 get树状数组+线段树(延迟标记) 洛谷:提高组所有nlogn模板+每日一道搜索题(基本的图的遍历题 ...

  5. poj 2074

    哎怎么说,感觉现在处理平面上点线的题已经比较熟练了. 这题就离散化然后搞个前缀和就没了. 准备开始进一步的自闭了. 下面是disguss的一些样例... 其实是我自己写错了个地方,本来能1A的. #i ...

  6. Codeforces 1000 组合数可行线段倒dp 边双联通缩点求树直径

    A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) using namespace std ...

  7. AcWing 802. 区间和

    (https://www.acwing.com/problem/content/804/) 假定有一个无限长的数轴,数轴上每个坐标上的数都是0. 现在,我们首先进行 n 次操作,每次操作将某一位置x上 ...

  8. Codeforces Gym 100637A A. Nano alarm-clocks 前缀和处理

    A. Nano alarm-clocks Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100637/p ...

  9. Codeforces Gym 100637A A. Nano alarm-clocks 前缀和

    A. Nano alarm-clocks Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100637/p ...

随机推荐

  1. 【Python】tuple and list 练习

    Tuple: 1.       __add__ a = (,,,,,,,,,) b = (,,,,,,,), c = (,,,,), result = a.__add__(b) print(resul ...

  2. bzoj2013[CEOI2010] A huge tower

    题意 有N(2<=N<=620000)快砖,要搭一个N层的塔,要求:如果砖A恰好在砖B上面,那么A不能比B的长度+D要长.问有几种方法,输出 答案 mod 1000000009的值 分析 ...

  3. HttpHelper类及调用

    首先列出HttpHelper类 /// <summary> /// Http操作类 /// </summary> public class HttpHelper { priva ...

  4. "流量监管"和"流量整形"的区别

    "流量监管" (Traffic Policing) 就是对流量进行控制,通过监督进入交换机端口的流量速率,对超出部分的流量进行"惩罚" (采用监管方式时是直接丢 ...

  5. P3629 [APIO2010]巡逻

    题目描述 在一个地区中有 n 个村庄,编号为 1, 2, ..., n.有 n – 1 条道路连接着这些村 庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以通过这些道路到达其 他任一个村庄.每条道 ...

  6. 深入理解JVM一性能监控工具

    一.前言 工欲善其事必先利其器,性能优化和故障排查在我们大都数人眼里是件比较棘手的事情,一是需要具备一定的原理知识作为基础,二是需要掌握排查问题和解决问题的流程.方法.本文就将介绍利用性能监控工具,帮 ...

  7. [Wf2011]Chips Challenge

    两个条件都不太好处理 每行放置的个数实际很小,枚举最多放x 但还是不好放 考虑所有位置先都放上,然后删除最少使得合法 为了凑所有的位置都考虑到,把它当最大流 但是删除最少,所以最小费用 行列相关,左行 ...

  8. C之面向对象编程20170707

    语言只是工具,设计思维才是根本.C虽然是面向过程的语言,但也是可以实现面向对象编程的,本文就是介绍如何使用C语言实现面向对象编程. 我们知道面向对象主要有三大特性:封装,继承,和多态,下面就从这个三个 ...

  9. JavaScript的变量预解析特性

    JavaScript是解释型语言是毋庸置疑的,但它是不是仅在运行时自上往下一句一句地解析的呢?事实上或某种现象证明并不是这样的,通过<JavaScript权威指南>及网上相关资料了解到,J ...

  10. VSAM:视频监控系统 A System for Video Surveillance and Monitoring

    VSAM(VideoSurveillance and Monitoring)视频监控系统 Robotics Institute CMU 1:引言 2:试验床介绍 3:基本的视频分析算法:运动目标检测, ...