poj 3168 Barn Expansion 排序
2013-10-04 19:25
162 查看
把每个横坐标边,纵坐标边分别排序,判断是否相邻即可。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn=25e3+9; int n; bool use[maxn]; struct { int a,b,c,d; }data[maxn]; struct A { int key,down,up,id; bool operator <(const A & xx) const { if(key==xx.key) return down<xx.down; return key<xx.key; } }a[maxn<<1]; int main() { // freopen("in.txt","r",stdin); while(scanf("%d",&n)!=EOF) { for(int i=1;i<=n;i++) { scanf("%d %d",&data[i].a,&data[i].b); scanf("%d %d",&data[i].c,&data[i].d); } memset(use,0,sizeof(use)); for(int i=1;i<=n;i++) { a[i*2-1].key=data[i].a; a[i*2-1].down=data[i].b; a[i*2-1].up=data[i].d; a[i*2].key=data[i].c; a[i*2].down=data[i].b; a[i*2].up=data[i].d; a[i*2].id=a[i*2-1].id=i; } sort(a+1,a+n+n+1); for(int i=1,j;i<=n+n;i=j) { for(j=i;j<=n+n;j++) if(a[i].key!=a[j].key) break; int up=a[i].up; for(int k=i+1;k<j;k++) { if(a[k].down<=up) use[a[k].id]=use[a[k-1].id]=1; up=max(up,a[k].up); } } for(int i=1;i<=n;i++) { a[i*2-1].key=data[i].b; a[i*2-1].down=data[i].a; a[i*2-1].up=data[i].c; a[i*2].key=data[i].d; a[i*2].down=data[i].a; a[i*2].up=data[i].c; a[i*2].id=a[i*2-1].id=i; } sort(a+1,a+n+n+1); for(int i=1,j;i<=n+n;i=j) { for(j=i;j<=n+n;j++) if(a[i].key!=a[j].key) break; int up=a[i].up; for(int k=i+1;k<j;k++) { if(a[k].down<=up) use[a[k].id]=use[a[k-1].id]=1; up=max(up,a[k].up); } } int ans=0; for(int i=1;i<=n;i++) ans+=!use[i]; cout<<ans<<endl; } return 0; }
相关文章推荐
- POJ 3168 Barn Expansion (平面扫描)
- POJ 3168 Barn Expansion(几何啊 )
- poj 3168 Barn Expansion 几何yy
- poj 3168 Barn Expansion 几何yy
- POJ 3168 Barn Expansion (平面扫描)
- POJ1007 关于STL排序方法 动态数组的创建 和向量的使用
- [极大化 极角排序] POJ 1981 Circle and Points & BZOJ 1338 Pku1981 Circle and Points单位圆覆盖
- 【POJ 1094】Sorting It All Out 【topo排序 的三种情况的特判】
- poj 随机快速排序(algo.openjudge.cn)
- poj2388 简单排序——归并排序
- DNA Sorting - POJ 1007 排序
- POJ 3168 Barn Expansion (几何基础)
- POJ 1088 滑雪 排序后 dp 或者 记忆化搜索 两种写法
- POJ 2007 极角排序
- POJ--2007(计算几何之极角排序)
- POJ 3616 Milking Time 排序Dp
- POJ 2007 Scrambled Polygon 凸包点排序逆时针输出
- POJ 2007 Scrambled Polygon (极角排序)
- POJ1094 字母排序(拓扑排序)
- poj[2487]排序题