4237: 稻草人

Time Limit: 40 Sec  Memory Limit: 256 MB
Submit: 835  Solved: 366
[Submit][Status][Discuss]

Description

JOI村有一片荒地,上面竖着N个稻草人,村民们每年多次在稻草人们的周围举行祭典。
有一次,JOI村的村长听到了稻草人们的启示,计划在荒地中开垦一片田地。和启示中的一样,田地需要满足以下条件:
田地的形状是边平行于坐标轴的长方形;
左下角和右上角各有一个稻草人;
田地的内部(不包括边界)没有稻草人。
给出每个稻草人的坐标,请你求出有多少遵从启示的田地的个数

Input

第一行一个正整数N,代表稻草人的个数
接下来N行,第i行(1<=i<=N)包含2个由空格分隔的整数Xi和Yi,表示第i个稻草人的坐标

Output

输出一行一个正整数,代表遵从启示的田地的个数

Sample Input

4
0 0
2 2
3 4
4 3

Sample Output

3
思路{
  很明显,该题是个偏序问题。
  我们考虑怎么利用CDQ分治快速求解。
  第一步:按照y排序,分成两段,递归分治。
  现在得到两部分,我们要做的就是统计前面区间每个点的对后一个区间点的贡献。
  应当要满足x1<x2,y1<y2。但是在这个前一个或后一个区间还是有重复(即被覆盖)。
  所以得到第二步:我们考虑用单调队列维护元素的升序降序。
  由于一定要查完该点x之前的元素的贡献,所以要把之前的点加入单调队列。
  那么有第三步:二分查找最开始的能得到答案的位置,统计答案。
}

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#define inf (1<<30)
#define il inline
#define RG register
#define LL long long
#define maxx 200010
using namespace std;
struct point{int x,y;}e[maxx];
int n;int s1[maxx],s2[maxx];LL Ans;
bool comp(const point & a,const point & b){return a.y<b.y;}
bool Comp(const point & a,const point & b){return a.x<b.x;}
il void CDQ(int l,int r){if(l>=r)return;int mid=(l+r)>>1;sort(e+l,e+r+1,comp);int top1=0,top2=0;CDQ(l,mid),CDQ(mid+1,r);sort(e+l,e+mid+1,Comp),sort(e+mid+1,e+r+1,Comp);for(RG int j=mid+1,i=l;j<=r;++j){while(top1&&e[s1[top1]].y>=e[j].y)top1--;s1[++top1]=j;while(e[i].x<=e[s1[top1]].x&&i<=mid){while(top2&&e[s2[top2]].y<e[i].y)top2--;s2[++top2]=i,i++;}int Min=e[s1[top1-1]].x,L=1,R=top2,pos=-1;while(L<=R){int Mid=(L+R)>>1;if(e[s2[Mid]].x>Min)pos=Mid,R=Mid-1;else L=Mid+1;}if(pos!=-1)Ans+=top2-pos+1;}
}
il void work(){scanf("%d",&n);e[0].x=e[0].y=-1;for(RG int i=1;i<=n;++i)scanf("%d%d",&e[i].x,&e[i].y);CDQ(1,n);printf("%lld",Ans);return ;
}
int main(){work();return 0;
}

  

转载于:https://www.cnblogs.com/zzmmm/p/7143783.html

BZOJ4237 稻草人相关推荐

  1. bzoj4237稻草人

    传送门 写了一中午,被自己瓜得无话可说. cdq的题,然后开始脑补. 写了第一个版本是考虑一半对另一半的贡献,贡献的那一遍维护单调性,没有考虑查询的一半的点之间的影响,一直偏大,14pt. 卡掉的数据 ...

  2. Stargazer的分治讲义

    cyk的分治讲义 文章目录 分治讲义 一.一般分治 1.序列分治 2.整体二分 3.CDQ分治 前置 引入 进入正题 4.二进制分组 5.线段树分治 二.树上分治 6.点分治 关于操作树上点分(论文) ...

  3. 【BZOJ4237】稻草人

    题意 给定平面上 \(N\) 个关键点,询问有多少个矩形满足左下和右上各有一个关键点,且矩形中间没有关键点. \(N\le 2\cdot 10^5\) . 题解 我们按 \(x\) 排序分治,对于左右 ...

  4. BZOJ4237 JOISC2014 稻草人 CDQ分治、单调栈

    传送门 题意:给出平面上$N$个点,求满足以下两个条件的矩形:①左下角与右上角各有一个点:②矩形内部没有点.$N \leq 2 \times 10^5$,所有数字大于等于$0$,保证坐标两两不同 最开 ...

  5. Bzoj4237:稻草人

    题面 传送门 Sol CDQ  C D Q CDQ分治 先对 x  x x排序,对y'>y yy在 CDQ  C D Q CDQ分治是从大到小排序 从大到小加入,右边用单调栈维护 x  x x递 ...

  6. PHP企业网站源码-稻草人PHP系统源码v1.0.3

    简介: 稻草人PHP系统是一个致力于业务系统的快速开发及快捷建立的PHP企业网站源码. 安装步骤: 下载源码解压后,Web服务器配置根目录为public 安装系统如下: 安装路径是:host/inst ...

  7. bzoj 4237: 稻草人(CDQ分治+单调栈+二分)

    4237: 稻草人 Time Limit: 40 Sec  Memory Limit: 256 MB Submit: 1352  Solved: 594 [Submit][Status][Discus ...

  8. 小程序稻草人图床神器,前后端开源

    文章目录 稻草人图床神器 小程序 后台: 小程序详解 项目结构 开屏页 1.判断网络状态 2.判断授权状态 3.跳转页面 授权页 主页 1. 图片按钮插槽组件 2. 上传文件 列表页 1.search ...

  9. 稻草人项目--项目前期准备

    目录 稻草人项目: 稻草人项目流程演示: 稻草人项目功能实现组件及工作原理: 创建数据库表格及表字段名称: 1. 项目前期准备--学习创建Maven聚合项目 1.1. 创建聚合项目 1.2. 通过父项 ...

  10. 稻草人项目--( day04 )

    目录 稻草人项目 8. 在SpringMVC框架中统一处理异常 关于统一处理异常的方法: 9. 请求参数验证 10.注册前端页面测试 11.注册成功后的收尾工作 12. 阶段小结 稻草人项目 8. 在 ...

最新文章

  1. Kali国内源更新sources.list
  2. 面向对象的编程学习笔记
  3. python知识:稀疏矩阵转换成密度矩阵
  4. php-7.2.13的安装,php7.2 安装mcrypt扩展
  5. (转载)NSOperation and NSOperationQueue教程(翻译)
  6. Azure Cosmos DB技术性解读
  7. 包含对象的json格式_如何把JSON数据格式转换为Python的类对象?
  8. 小腿抽筋了,按摩承山穴,外加念观世音菩萨是不是迷信
  9. Atitit 减少财政支出----获取商家商业机构的补贴措施 attilax大总结.docx
  10. 专业的统计分析软件 IBM SPSS Statistics 26.0.2 Mac版(内附安装包网盘链接)
  11. PKI体系和数字证书
  12. Meta 开源首个 AI 语音翻译系统,闽南话和英语可以直接语音互译
  13. Unity3D 鼠标点击切换图片
  14. 《数据结构C语言版》——绪论
  15. php 腾讯云 短信验证码发送
  16. ui设计为什么要切图,切图是什么意思?
  17. [Asp.Net Core]鉴权授权
  18. 五、python实现人工蜂群算法(简单明了版)
  19. 典当行抵押需要什么资料
  20. IEEE期刊/会议论文模板

热门文章

  1. 不小心执行了rm -f,除了跑路,如何恢复?
  2. 一场员工高管间的口水战,员工输了
  3. 如果赚钱很容易,为什么轮到你?
  4. eureka多了一个莫名其妙的服务_这些手游服务器全部飘红,每一个服务器都人多到爆满...
  5. zabbix监控之概念和安装
  6. centos7安装docker笔记
  7. dialog问题记录
  8. d3.js(v5.7)的node与数据匹配(自动匹配扩展函数)
  9. create-react-app脚手架中配置webpack的方法
  10. JAVA笔记整理(五),JAVA中的继承