题目链接:

id=3168">POJ 3168 Barn Expansion

题意:抽象出来就是给出n个矩形的坐标是(左下角和右上角的坐标,矩形的边都是平行x,y轴),问有几个矩形和其它矩形没有接触(仅仅存在边接触或者点接触,不存在有公共面积)。

思路:把边分成两类,平行x轴和平行y轴。对边进行排序。然后for一遍推断是否有相交就可以

AC代码:

#include <stdio.h>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
using namespace std; struct node {
int mark;
int d,xx,yy;
node() {}
node(int _d,int _xx,int _yy,int _mark) {
d=_d,xx=_xx,yy=_yy,mark=_mark;
}
}; vector<node> sx,sy;
bool vis[25010];
bool cmp(node a,node b) {
if(a.d!=b.d) return a.d<b.d;
else if(a.xx!=b.xx) return a.xx<b.xx;
else return a.yy<b.yy;
} int main() {
int n;
int i,j,k;
int a,b,c,d;
while(scanf("%d",&n)!=EOF) {
sx.clear();
sy.clear();
memset(vis,false,sizeof vis);
for(i=0; i<n; i++) {
scanf("%d %d %d %d",&a,&b,&c,&d);
sy.push_back(node(b,a,c,i));
sy.push_back(node(d,a,c,i));
sx.push_back(node(a,b,d,i));
sx.push_back(node(c,b,d,i));
}
int sz1,sz2;
sz1=sy.size();
sz2=sx.size();
sort(sx.begin(),sx.end(),cmp);
sort(sy.begin(),sy.end(),cmp); //竖 y<yy
int up;
up=sy[0].yy;
for(i=1;i<sz1;i++){
if(sy[i-1].d == sy[i].d){
if(up >= sy[i].xx){
vis[sy[i].mark]=vis[sy[i-1].mark]=true;
}
}
else up=sy[i].yy;
up=max(sy[i].yy,up);
}
up=sx[0].yy;
for(i=1;i<sz2;i++){
if(sx[i-1].d == sx[i].d){
if(up >= sx[i].xx){
vis[sx[i].mark]=vis[sx[i-1].mark]=true;
}
}
else up=sx[i].yy;
up=max(sx[i].yy,up);
}
int ans=0;
for(i=0;i<n;i++){
if(!vis[i]) ans++;
}
printf("%d\n",ans);
}
return 0;
}
/*
5
0 2 2 7
3 5 5 8
4 2 6 4
6 1 8 6
0 0 8 1 4
2 1 3 2
2 2 3 3
3 3 4 4
4 1 5 2 9
0 0 1 1
1 0 2 1
2 0 3 1
0 1 1 2
1 1 2 2
2 1 3 2
0 2 1 3
1 2 2 3
2 2 3 3 6
0 2 2 7
3 5 5 8
4 2 6 4
6 1 8 6
0 0 8 1
4 5 5 6 3
1 1 6 6
6 2 7 3
6 5 8 7
*/

POJ 3168 Barn Expansion (几何+排序)的更多相关文章

  1. poj 3168 Barn Expansion 几何yy

    题链:http://poj.org/problem? id=3168 Barn Expansion Time Limit: 1000MS   Memory Limit: 65536K Total Su ...

  2. poj 3168 Barn Expansion

    Barn Expansion Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2465   Accepted: 666 Des ...

  3. POJ 3168 Barn Expansion (几何基础)

    [题目链接] http://poj.org/problem?id=3168 [题目大意] 给出一些矩形,没有相交和包含的情况,只有相切的情况 问有多少个矩形没有相切或者边角重叠 [题解] 我们将所有的 ...

  4. POJ 3168 排序+扫描

    题意: 思路: 我们可以把每个矩形拆成四条线 与x轴平行的放在一起 与y轴平行的放在一起 排个序 判一判有没有交 有交 则说明不可扩张 统计一下 就可以了 处理的姿势很重要 姿势不对毁一生 //By ...

  5. POJ 2367 (裸拓扑排序)

    http://poj.org/problem?id=2367 题意:给你n个数,从第一个数到第n个数,每一行的数字代表排在这个行数的后面的数字,直到0. 这是一个特别裸的拓扑排序的一个题目,拓扑排序我 ...

  6. poj 3687 Labeling Balls(拓扑排序)

    题目:http://poj.org/problem?id=3687题意:n个重量为1~n的球,给定一些编号间的重量比较关系,现在给每个球编号,在符合条件的前提下使得编号小的球重量小.(先保证1号球最轻 ...

  7. Poj 2371 Questions and answers(排序)

    题目链接:http://poj.org/problem?id=2371 思路分析:使用计数排序或其他时间复杂度为O( log N )的排序. 代码如下: #include <iostream&g ...

  8. [ACM] POJ 3687 Labeling Balls (拓扑排序,反向生成端)

    Labeling Balls Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10161   Accepted: 2810 D ...

  9. poj 2762(强连通分量+拓扑排序)

    题目链接:http://poj.org/problem?id=2762 题意:给出一个有向图,判断任意的两个顶点(u,v)能否从u到达v,或v到达u,即单连通,输出Yes或No. 分析:对于同一个强连 ...

随机推荐

  1. SecureCRT 常用配置

    1.SecureFx 中文乱码,应设置成utf-8编码了,依旧乱码 在 C:\Users\root\AppData\Roaming\VanDyke\Config\Sessions 下找到对应的sess ...

  2. web普通项目映射为maven项目

    localhost:8080/yourWebLocation  访问 前一个插件是映射项目路径成maven的格式 后一个插件是映射访问网址所需要的东西 <build> <!-- 发布 ...

  3. java基础学习总结——GUI编程(一) 还未仔细阅读

    一.AWT介绍

  4. PostgreSQL在线安装

    背景:CentOS 7 一.在线yum安装 yum -y install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7 ...

  5. Mysql 逻辑运算符详解

    逻辑运算符又称为布尔运算符,用来确认表达式的真和假.MySQL 支持4 种逻辑运算符,如表4-3 所示. 表4-3                          MySQL 中的逻辑运算符 运算符 ...

  6. 详解登录认证及授权--Shiro系列(一)

    Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密.Apache Shiro 的首要目标是易于使用和理解.安全有时候是很复杂的,甚至是痛苦的, ...

  7. 简洁经常使用权限系统的设计与实现(一):构造权限菜单树的N(N&gt;=4)种方法

    权限系统.Web开发常见标准子系统之中的一个.结合自己的一些思考和实践,从本篇開始权限系统的设计与实现之路. 近期,重构了项目的权限菜单构造过程,向前端返回json格式的权限树. 这一篇.仅仅是大致介 ...

  8. html使用自我知识点总结

    1. 不要忘结束标签 <p>This is a paragraph <p>This is a paragraph 未来的HTML版本号不同意省略结束标签. 2. 没有内容的HT ...

  9. Atitit.ALT+TAB没反应车and 点击任务栏程序闪烁但是不能切换

    Atitit.ALT+TAB没反应车and 点击任务栏程序闪烁但是不能切换 1. 可能你的Alt+Tab键被别人禁用了,试下下面的方法: 1 2. 为什么要禁用Alt+Tab 1 3. ALT+TAB ...

  10. [svc]jq神器使用

    jq神器 处理json数据 支持过滤某字段 支持数学运算(对字段处理) 安装 yum install -y jq 使用 参考: http://blog.just4fun.site/command-to ...