博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1177 Picture【矩形周长并】
阅读量:6653 次
发布时间:2019-06-25

本文共 1935 字,大约阅读时间需要 6 分钟。

题意: 给出 N 个矩形,可以相互覆盖,求所有矩形合在一起的轮廓总长度。

分析:先对所有矩形按左下角的Y 坐标排序,让矩形的所有点向 X 轴投影,记录所有的投影的X值,对X 排序,分段累加X 坐标差值;

   ① 如果 s[i].y1>up  说明两个矩形没有交集,即新的矩形没有被前一个矩形覆盖到 ,res+=2*(right[i]-right[i-1]) 累加新的 横边覆盖值。

        ② 如果 s[i].y2>up  说明新的矩形下边界在该 相邻 X 的区间被覆盖,所以只要更新给 区间的上边界 UP=s[i].y2

        然后对矩形按左下角的X 坐标排序,让矩形向y轴作投影,最后按照类似的方法求出 所有竖边的和。

 

#include
#include
#include
#define eps 1e-8#define INF 0x1f1f1fint tot,n,m,tt;struct node{ double x1,y1,x2,y2;}s[10005];double left[10005];double right[10005];double x[10005];double y[10005];int cmp1(const void*p1,const void*p2){ node *a=(node*)p1; node *b=(node*)p2; return a->y1>b->y1?1:-1;}int cmp2(const void*p1,const void*p2){ node *a=(node*)p1; node *b=(node*)p2; return a->x1>b->x1?1:-1;}int cmp3(const void*p1,const void*p2){ return *(double*)p1>*(double*)p2?1:-1;}int main(){ int i,j; double res,up,down; while(scanf("%d",&n)!=EOF) { tot=0; for(i=0;i
=s[j].x1&&right[i]<=s[j].x2) { if(s[j].y1>up) { res+=2*(right[i]-left[i]); down=s[j].y1; up=s[j].y2; } else if(s[j].y2>up) up=s[j].y2; } } qsort(s,n,sizeof(s[0]),cmp2); qsort(y,tot,sizeof(y[0]),cmp3); tt=0; for(i=1;i
=s[j].y1&&right[i]<=s[j].y2) { if(s[j].x1>up) { res+=2*(right[i]-left[i]); down=s[j].x1; up=s[j].x2; } else if(s[j].x2>up) up=s[j].x2; } } printf("%.0lf",res); } return 0;}

转载于:https://www.cnblogs.com/dream-wind/archive/2012/07/31/2617282.html

你可能感兴趣的文章
mac上面查看路由表
查看>>
Nginx location 斜线问题
查看>>
2018/10/22 Linux 第3周笔记
查看>>
linux特殊权限SUID、SGID、SBIT
查看>>
redhat7.3多路径配置
查看>>
MessageBox的常见用法
查看>>
org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: unknown encoding
查看>>
我的友情链接
查看>>
innodb_buffer_pool_size 大小建议
查看>>
Delphi XE2 之 FireMonkey 入门(25) - 数据绑定: TBindingsList: 表达式的灵活性及表达式函数...
查看>>
事件自调用 - 回复 maxcool 的问题
查看>>
Horizon View 6.0 基于RDS的应用发布
查看>>
ubuntu下系统重启dns就被清空的解决方案
查看>>
Ant Examples
查看>>
建立C语言动态链接库
查看>>
红帽企业存储管理之iscsi简单应用
查看>>
Rsync安装使用
查看>>
更改Linux系统日志的时间格式
查看>>
FC-SAN vs. IP-SAN详细技术比较
查看>>
sequioadb源码分析
查看>>