正题

题目链接:https://loj.ac/problem/2880


题目大意

给出平面上的nnn个点,然后求有多少个矩形满足

  1. 左下角和右上角各有一个点
  2. 矩形之间没有其他点

1≤n≤2×105,1≤xi,yi≤109,1\leq n\leq 2\times 10^5,1\leq x_i,y_i\leq 10^9,1≤n≤2×105,1≤xi​,yi​≤109,保证xi,yix_i,y_ixi​,yi​分别不重复出现。


解题思路

按照xxx排序,考虑CDQCDQCDQ分治后左边对右边的影响,对yyy从大到小排序然后左右各自维护一个单调栈,左边考虑每个点第一个右上角的点,右边维护一个yyy轴递减,xxx轴递增的单调栈,然后再右边的单调栈上二分出左边的合法位置即可。

时间复杂度O(nlog⁡2n)O(n\log^2 n)O(nlog2n)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=2e5+10;
struct node{int x,y;
}p[N];
int n,s[N],t[N];
long long ans;
bool cmp(node x,node y){return x.x<y.x;}
bool cMp(node x,node y){return x.y>y.y;}
void CDQ(int l,int r){if(l==r)return;int mid=(l+r)>>1;CDQ(l,mid);CDQ(mid+1,r);sort(p+l,p+mid+1,cMp);sort(p+mid+1,p+r+1,cMp);int z=mid+1,top=0,toq=0;for(int i=l;i<=mid;i++){while(z<=r&&p[z].y>=p[i].y){while(top>0&&p[z].x<p[s[top]].x)top--;s[++top]=z;z++;}while(toq>0&&p[i].x>p[t[toq]].x)toq--;if(toq){int L=1,R=top;while(L<=R){int mid=(L+R)>>1;if(p[s[mid]].y>p[t[toq]].y)L=mid+1;else R=mid-1;}ans+=top-L+1;}else ans+=top;t[++toq]=i;}return;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d",&p[i].x,&p[i].y);sort(p+1,p+1+n,cmp);CDQ(1,n);printf("%lld\n",ans);return 0;
}

Loj#2880-「JOISC 2014 Day3」稻草人【CDQ分治,单调栈,二分】相关推荐

  1. 「JOISC 2014 Day3」稻草人

    「JOISC 2014 Day3」稻草人 问题简述 解析 代码 问题简述 链接 https://loj.ac/problem/2880   给定 n n n个稻草人(横纵坐标是不大于 1 0 9 10 ...

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

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

  3. LOJ #2878. 「JOISC 2014 Day2」邮戳拉力赛 动态规划+括号序列

    神题呀,我们观察到行走的方式一定是一条链+若干条环. 然后环可以看成是一对括号,所以来一个基于括号序的 DP. code: #include <bits/stdc++.h> #define ...

  4. [LOJ#2878]. 「JOISC 2014 Day2」邮戳拉力赛[括号序列dp]

    题意 题目链接 分析 如果走到了下行车站就一定会在前面的某个车站走回上行车站,可以看成是一对括号. 我们要求的就是 类似 代价最小的括号序列匹配问题,定义 f(i,j) 表示到 i 有 j 个左括号没 ...

  5. 「JOISC 2014 Day1」巴士走读

    「JOISC 2014 Day1」巴士走读 题解部分: (如果不怎么喜欢看推导的人可以直接看下面的关键部分,在段尾会有标注(或者看完定义直接看代码)) 本题让我们求到达点n需要最晚何时到达点1,我们可 ...

  6. bzoj4244 loj2878. 「JOISC 2014 Day2」邮戳拉力赛 括号序列+背包

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4244 https://loj.ac/problem/2878 题解 挺妙的一道题. 一开始一直 ...

  7. 「JOISC 2014 Day4」挂饰(背包DP)题解

    题目翻译 JOI 君有 n n n 个装在手机上的挂饰,编号为 1 - n 1 \ldots n 1-n. JOI 君可以将其中一些挂饰装在手机上. JOI 君的挂饰有一些与众不同--其中的一些挂饰附 ...

  8. 【LOJ】#3030. 「JOISC 2019 Day1」考试

    LOJ#3030. 「JOISC 2019 Day1」考试 看起来求一个奇怪图形(两条和坐标轴平行的线被切掉了一个角)内包括的点个数 too naive! 首先熟练的转化求不被这个图形包含的个数 -- ...

  9. 「JOISC 2020 Day4」治疗计划(线段树+dijkstra最短路)

    「JOISC 2020 Day4」治疗计划 description solution 设dpi:1−Ridp_i:1-R_idpi​:1−Ri​ 都能被救治成功的最小花费 两个治疗方案[Li,Ri], ...

最新文章

  1. python在当前目录创建txt文件-python-在目录中创建多个文本文件的字数字...
  2. linux下kvm设备配置,Linux下为KVM 配置桥接设备
  3. 不仅有史上最详细Docker 安装Minio Client,还附带解决如何设置永久访问和永久下载链接!!(详图)绝对值得收藏的哈!!!!
  4. m3u8链接地址_FFmpeg下载m3u8视频
  5. Hadoop权威指南 _03_第I部分Hadoop基础知识_第1章初识Hadoop.
  6. c#同类型操作最终得到的结果将是同类型
  7. 是什么使波西米亚狂想曲成为杰作-数据科学视角
  8. [html] webp与jpg、png比较,它有什么优劣势?如何选择?
  9. 8招教您做好B2B行业网站页面设计
  10. Java 多线程详解(四)------生产者和消费者
  11. Linux修行学习,网站持更
  12. wifi破解到局域网渗透
  13. 小米笔记本pro lol测试软件,小米笔记本Pro游戏实测,MX150显卡竟有猫腻
  14. 1.3 收敛数列的性质
  15. 数据库成绩管理系统课程设计mysql_数据库学生成绩管理系统课程设计报告
  16. 安装nvidia驱动和cuda工具包
  17. Python内置函数
  18. atom的linux版本,Atom平台多版本Linux性能测试
  19. 【已解决】qlv格式转mp4(腾讯视频)
  20. Auto.js Pro 调起APP并跳转至指定页面

热门文章

  1. 通达学院计算机组成原理试卷及答案,2021全国网络工程专业大学排名(5篇)
  2. linux卸载android studio,mac上完整卸载删除.简单粗暴无脑:androidstudio删除方案
  3. latex 1图加标题_使用VsCode编译latex心得
  4. html游戏怎么做,HTML5 制做“游戏”的一个基本流程
  5. 创维linux进入工厂模式,创维电视怎么进入工厂模式?
  6. java定时器报错,定时器设置报错
  7. linux实验目的能学会什么意思,Linux实验.doc
  8. 做流向图_各类型供热暖系统图大全,一饱眼福!
  9. linux开发板显示横向彩虹,给 Linux 终端的输出添加彩虹特效的命令
  10. leetcode1. 两数之和(两种方法)