poj 1389
来源:互联网 发布:外贸原单皮鞋淘宝店 编辑:程序博客网 时间:2024/06/16 03:44
求矩形的面积并
#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int maxn=1101;int ans;struct{ int l,r,x; int y1,y2; bool ture; int count;}tr[10000];struct data{ int x,y1,y2,count; bool operator <(const data &xx) const { return(x<xx.x); }}d[maxn*2];int y[maxn*2];int maketree(int t,int l,int r){ tr[t].l=l; tr[t].r=r; tr[t].y1=y[l]; tr[t].y2=y[r]; tr[t].ture=1; tr[t].count=0; if(l+1==r) return(0); int mid=(l+r)/2; maketree(t*2,l,mid); maketree(t*2+1,mid,r);}int pushdown(int t){ tr[t*2].x=tr[t].x; tr[t*2].count=tr[t].count; tr[t*2+1].x=tr[t].x; tr[t*2+1].count=tr[t].count;}int insert(int t,int y1,int y2,data &d){ if(tr[t].y1==y1&&tr[t].y2==y2) { if(tr[t].ture) { if(tr[t].count>0) { int txt=y2-y1; ans+=txt*(d.x-tr[t].x); } tr[t].count+=d.count; tr[t].x=d.x; return(0); } } if(tr[t].ture) pushdown(t); tr[t].ture=0; int mid=(tr[t].l+tr[t].r)/2; mid=y[mid]; if(mid<=y1) insert(t*2+1,y1,y2,d); else if(y2<=mid) insert(t*2,y1,y2,d); else { insert(t*2,y1,mid,d); insert(t*2+1,mid,y2,d); }}int main(){ int n; while(1) { int x1,x2,y1,y2; scanf("%d %d %d %d",&x1,&y1,&x2,&y2); if(x1==-1&&y1==-1&&x2==-1&&y2==-1) break; d[1].x=x1; d[1].y1=y1; d[1].y2=y2; d[2].x=x2; d[2].y1=y1; d[2].y2=y2; d[1].count=1; d[2].count=-1; y[1]=y1; y[2]=y2; for(int i=2;;i++) { scanf("%d %d %d %d",&x1,&y1,&x2,&y2); int now=2*i-1,next=now+1; d[now].x=x1; d[now].y1=y1; d[now].y2=y2; d[next].x=x2; d[next].y1=y1; d[next].y2=y2; d[now].count=1; d[next].count=-1; y[now]=y1; y[next]=y2; if(x1==-1&&y1==-1&&x2==-1&&y2==-1) { n=i-1; break; } } sort(y+1,y+2*n+1); sort(d+1,d+2*n+1); maketree(1,1,2*n); ans=0; for(int i=1;i<=2*n;i++) { insert(1,d[i].y1,d[i].y2,d[i]);// printf("%d %d\n",d[i].x,ans); } printf("%d\n",ans); } return 0;}
- poj 1389
- poj 1389
- poj 1389 多边形面积
- POJ 1389 (扫描线)
- POJ 1389 (扫描线)
- poj 1389 扫描线
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- 宏中"#"和"##"的用法
- java sleep()和wait()的区别
- 软工概述
- Windows:Windows 8安装64位Benq G900HD的显示器驱动
- IOS在线学习好網站收集
- poj 1389
- 链表--结构与指针使用
- 二进制的简单运用
- (wifi)jni层gbk格式中文无损转换成utf格式
- 产生随机数
- hdu 2896 病毒侵袭 (AC自动机)
- HDOJ 骨铺方格
- 《Linux Shell Scripting Cookbook》Linux常用命令笔记(一)
- BOOTMGR is compressed的解决方法