博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1151 Atlantis(矩形面积并)
阅读量:6080 次
发布时间:2019-06-20

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

题意:每组给出矩形左上角和右下角坐标,求矩形面积并;

思路:沿水平方向计算面积并;(切成水平条);

#include
#include
#include
#include
#include
using namespace std;const int maxn=500;struct node{ double x; int l,r,t; //t为上下边标志}f[maxn]; //水平条int n;double q[maxn],x1[maxn],yy1[maxn],x2[maxn],yy2[maxn];//q存储排序后的x坐标struct segment{ int mark; //并区间标志 double len;//并区间长度}tree[maxn*20];//线段树int cmp(node a,node b){ return a.x
=lc) ins(k*2,l,(l+r)/2,lc,rc,t); if((l+r)/2
x2[i]) swap(x1[i],x2[i]); if(yy1[i]>yy2[i]) swap(yy1[i],yy2[i]); q[i*2-2]=x1[i]; q[i*2-1]=x2[i];//存储x坐标 } sort(q,q+n*2); int m=unique(q,q+n*2)-q; for(int i=1;i<=n;i++){ //将矩阵i的上边左右端点在q表的指针、y坐标、上边标志存入f[i*2-2];将矩阵i的下边左右端点在q表的指针、y坐标、下边标志存入f[i*2-1] f[i*2-2].l=lower_bound(q,q+m,x1[i])-q; f[i*2-2].r=lower_bound(q,q+m,x2[i])-q; f[i*2-2].x=yy1[i]; f[i*2-2].t=1; f[i*2-1].l=lower_bound(q,q+m,x1[i])-q; f[i*2-1].r=lower_bound(q,q+m,x2[i])-q; f[i*2-1].x=yy2[i]; f[i*2-1].t=-1; } sort(f,f+n*2,cmp); for(int i=0;i

 

转载于:https://www.cnblogs.com/dashuzhilin/p/4551294.html

你可能感兴趣的文章
Android studio使用心得(二)--- 打包签名apk发布
查看>>
vi 编辑器的用法
查看>>
Android开发学习笔记(五):Starting an Activity
查看>>
xcode cocos2sx make
查看>>
SQL SERVER数据库服务器排序规则修改
查看>>
/etc/profile和/etc/profile.d/的区别
查看>>
POI支持的颜色对比
查看>>
linux内核编译(fedora16_x86_64)
查看>>
iOS 键盘自适应(IQKeyboardManager)使用小结
查看>>
解决vsftpd用户登录出现500 OOPS: cannot change directory问题
查看>>
修改CentOS发行信息以绕过磁盘阵列多路合并软件的操作系统检查
查看>>
阅读JDK8 CopyOnWriteArraySet应该了解什么
查看>>
Objective-c和Java下DES加密保持一致的方式
查看>>
RequireJS + AngularJS Seed 13 _Grunt-plugin
查看>>
python3统计文件中字符或字符串出现的次数,支持同时多个字符串
查看>>
Redis 的 8 大应用场景!
查看>>
nginx 安装
查看>>
Django学习笔记(1)---引入静态资源
查看>>
鸟哥的Linux笔记----20180113
查看>>
quick-cocos2d-x开发工具sublime text及其强力插件QuickXDev
查看>>