题意:

思路:
我们可以把每个矩形拆成四条线

与x轴平行的放在一起
与y轴平行的放在一起
排个序 判一判有没有交 有交 则说明不可扩张 统计一下 就可以了

处理的姿势很重要
姿势不对毁一生

//By SiriusRen
#include <cstdio>
#include <algorithm>
using namespace std;
#define N 55555
int n,x1,y1,x2,y2,cnt,vis[N],ans,maxx;
struct Edgex{int x,y1,y2,id;bool operator < (const Edgex &a)const{if(x!=a.x)return x<a.x;return y2<a.y2;}}edgex[N];
struct Edgey{int y,x1,x2,id;bool operator < (const Edgey &a)const{if(y!=a.y)return y<a.y;return x1<a.x1;}}edgey[N];
int main(){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d%d%d",&x1,&y1,&x2,&y2),vis[i]=1,edgex[++cnt].x=x1,edgex[cnt].y1=y2,edgex[cnt].y2=y1,edgex[cnt].id=i,edgey[cnt].y=y1,edgey[cnt].x1=x1,edgey[cnt].x2=x2,edgey[cnt].id=i,edgex[++cnt].x=x2,edgex[cnt].y1=y2,edgex[cnt].y2=y1,edgex[cnt].id=i,edgey[cnt].y=y2,edgey[cnt].x1=x1,edgey[cnt].x2=x2,edgey[cnt].id=i;sort(edgex+1,edgex+1+cnt),sort(edgey+1,edgey+1+cnt);for(int i=1,j=i;i<=cnt;i=j,maxx=edgex[i].y1){while(edgex[i].x==edgex[j].x)j++;for(int k=i+1;k<j;k++){if(edgex[k].y2<=maxx)vis[edgex[k].id]=vis[edgex[k-1].id]=0;maxx=max(maxx,edgex[k].y1);}}for(int i=1,j=i;i<=cnt;i=j,maxx=edgey[i].x2){while(edgey[i].y==edgey[j].y)j++;for(int k=i+1;k<j;k++){if(edgey[k].x1<=maxx)vis[edgey[k].id]=vis[edgey[k-1].id]=0;maxx=max(maxx,edgey[k].x2);}}for(int i=1;i<=n;i++)ans+=vis[i];printf("%d\n",ans);
}

转载于:https://www.cnblogs.com/SiriusRen/p/6532196.html

POJ 3168 排序+扫描相关推荐

  1. html排序按钮_插件分享 | 可进行排序扫描任务的Task Queue

    前言:在以往hvv场景中使用Goby的过程总是存在一个痛点:时间短,目标多,只能盯着扫描进度结束后才能手动返回到初始界面开启下一个扫描任务(内心极度狂躁).本次Goby更新后又开放了新的插件入口点以及 ...

  2. poj 2388 排序的水题

    纯纯的水题. #include <iostream> #include <fstream> #include <cstdlib>using namespace st ...

  3. 143. Sort Colors II - 排颜色 II(rainbowSort彩虹排序)

    Description 给定一个有n个对象(包括k种不同的颜色,并按照1到k进行编号)的数组,将对象进行分类使相同颜色的对象相邻,并按照1,2,...k的顺序进行排序. 注意事项 You are no ...

  4. 冒泡排序算法和选择排序算法比较

      冒泡排序算法详细内容见→冒泡排序算法.   选择排序算法详细内容见→选择排序算法.   冒泡排序算法和选择排序算法的区别: 冒泡排序是比较相邻位置的两个数:而选择排序是按顺序比较,找出最大值或者最 ...

  5. 《挑战程序设计竞赛(第2版)》习题册攻略

    本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...

  6. 0x08.基本算法 — 总结与练习

    目录 知识点归纳 1.AcWing116. 飞行员兄弟 (POJ 2965) (dfs/位运算状态压缩) 1.DFS 2.位运算+二进制枚举 2.AcWing.117. 占卜DIY (模拟) 3.Ac ...

  7. 备战ccpc分站赛:秦皇岛和威海站(数论模块和dp模块)

    挑战程序设计竞赛(第2版)练习题 tips:难度(个人主观判断): 简单* 简单但卡思维 ** 中 *** 中稍加思考 **** 难 ***** 1 . 记录结果再利用的"动态规划" ...

  8. 挑战程序设计竞赛 3.6 与平面和空间打交道的计算几何

    POJ 1981:Circle and Points /*题目大意:给出平面上一些点,问一个半径为1的圆最多可以覆盖几个点题解:我们对于每个点画半径为1的圆,那么在两圆交弧上的点所画的圆,一定可以覆盖 ...

  9. 【读书笔记】《算法竞赛进阶指南》读书笔记——0x00基本算法

    to-do: 例题: POJ 1845 Sumdiv 所有的课后习题: 随缘~~~ 位运算 对于一个二进制数,通常称其最低位为第0位,从右往左依此类推. 补码 unsigned int 直接将其看作3 ...

最新文章

  1. Android Studio中新建和引用assets文件
  2. 最新消息!腾讯紧急宣布再度延期复工时间到24号!附各大企业最新复工时间表...
  3. 【python】命令行解析工具getopt用法
  4. 由 HashMap 引发的一个面试10连炮争吵!
  5. 实现歌词效果自动滚动_只需五步,专业Pr软件实现视频歌词渐变色效果,你学会了吗?...
  6. 学生时代,我做过最有价值的事是什么?
  7. hive中文字符乱码 解决方法【转】
  8. 以Linux系统(Ubuntu)开发生活(一)
  9. 2019年9月全国计算机等级考试报名,关于2019年9月全国计算机等级考试报名的通知...
  10. [设计模式]6. C++与职责链模式(chain of rsponsibility pattern)
  11. 微内核和宏内核的区别(短小、精悍)
  12. BM求线性递推模板(杜教版)
  13. Arduino-1602-LiquidCrystal库
  14. dell台式计算机恢复出厂设置,戴尔Win10电脑怎么恢复出厂设置?
  15. ubuntu16.04 360随身WiFi2
  16. 第二章 计算机系统和计算机组成原理
  17. C#实现触摸屏自定义键盘
  18. Excel写入换行-JAVA
  19. ipad中的神级笔记软件 Notability的使用方法
  20. android优化启动时间

热门文章

  1. 最新Jmeter版本常用技巧集锦
  2. 软件测试用例设计方法之边界值分析法
  3. 软件测试基础:测试用例设计
  4. 其他测试用例设计方法-错误推测法与正交实验法
  5. unity3d android 实时阴影,Unity移动端实时阴影绘制
  6. 错误: 代理抛出异常错误: java.rmi.server.ExportException: Port already in use: 1099; nested exception is
  7. 快速掌握 10 个 HTML5 必备技巧
  8. 8年前端开发的知识点沉淀(不知道会多少字,一直写下去吧,)
  9. 前端基础:vue.js跟node.js分别是什么
  10. php自带解压缩,PHP自带ZIP压缩、解压缩类ZipArchiv使用指南_PHP教程