博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[CF983D]Arkady and Rectangles
阅读量:6266 次
发布时间:2019-06-22

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

题意:按顺序在坐标轴上画$n$个颜色为$1\cdots n$的矩形(数字大的颜色覆盖数字小的颜色),问最后能看到多少种颜色

先离散化,然后考虑扫描线+线段树

线段树每个节点用一个set存覆盖整个区间的颜色,$mx$表示之前未被看到并且能在这个区间看到的最大颜色,$mn$表示能在这个区间看到的最小颜色,那么修改时用儿子的对应信息和当前节点的set最大值更新信息即可

每次扫描线修改完后统计答案,不停地把根节点的$mx$加入答案(已被看到过)并更新线段树对应区间即可

注意坐标区间$[l,r]$转为实现时的区间是$[l,r-1]$!

#include
#include
#include
#include
using namespace std;set
cov[800010];int mx[800010],mn[800010];bool vis[100010];void pushup(int x,bool f){ if(f) mx[x]=mn[x]=0; else{ mx[x]=max(mx[x<<1],mx[x<<1|1]); mn[x]=min(mn[x<<1],mn[x<<1|1]); } if(!cov[x].empty()){ int g=*cov[x].rbegin(); if(!vis[g]) mx[x]=max(mx[x],g); else mn[x]=max(mn[x],g); } if(mn[x]>mx[x])mx[x]=0;}void modify(int L,int R,int v,int l,int r,int x){ if(L<=l&&r<=R){ if(v>0) cov[x].insert(v); else cov[x].erase(-v); return pushup(x,l==r); } int mid=(l+r)>>1; if(L<=mid)modify(L,R,v,l,mid,x<<1); if(mid
<<1|1); pushup(x,0);}map
px,py;map
::iterator it;struct rect{ int x1,y1,x2,y2;}r[100010];struct event{ int l,r,v; event(int a=0,int b=0,int c=0){l=a;r=b;v=c;}};vector
e[200010];int main(){ int n,nx,ny,i,ans; scanf("%d",&n); for(i=1;i<=n;i++){ scanf("%d%d%d%d",&r[i].x1,&r[i].y1,&r[i].x2,&r[i].y2); px[r[i].x1]=px[r[i].x2]=1; py[r[i].y1]=py[r[i].y2]=1; } for(nx=1,it=px.begin();it!=px.end();it++,nx++)it->second=nx; nx--; for(ny=1,it=py.begin();it!=py.end();it++,ny++)it->second=ny; ny--; for(i=1;i<=n;i++){ r[i].x1=px[r[i].x1]; r[i].x2=px[r[i].x2]; r[i].y1=py[r[i].y1]; r[i].y2=py[r[i].y2]-1; e[r[i].x1].push_back(event(r[i].y1,r[i].y2,i)); e[r[i].x2].push_back(event(r[i].y1,r[i].y2,-i)); } ans=0; for(i=1;i<=nx;i++){ for(event v:e[i])modify(v.l,v.r,v.v,1,ny,1); while(mx[1]){ vis[mx[1]]=1; ans++; modify(r[mx[1]].y1,r[mx[1]].y2,0,1,ny,1); } } printf("%d",ans+1);}

转载于:https://www.cnblogs.com/jefflyy/p/9130727.html

你可能感兴趣的文章
pytesseract OCR 识别
查看>>
杨强教授PPT通俗易懂解密:如何在人工智能浪潮中少走弯路
查看>>
「镁客·请讲」速感科技陈震:以机器视觉为核心,让低成本、高性价比成为机器人行业关键词...
查看>>
「镁客·请讲」潜行科技杨洋:飞行无人机市场膨胀,水下无人机迎来元年
查看>>
sqlserver2008无法连接到local解决方案
查看>>
VR与游戏完美结合?斯皮尔伯格导演的《玩家一号》发布预告片
查看>>
5月15日云栖精选夜读丨阿里巴巴与三个知名车企达成合作,将为其“AI+车”解决方案...
查看>>
想要自定义专属无人机吗?MIT研究的这套系统帮助你
查看>>
量子技术将如何颠覆未来战争形态
查看>>
蚂蚁金服:消息队列事务型消息原理浅析
查看>>
我们为什么需要量子计算
查看>>
Word文档转Markdown插件(Windows)
查看>>
JS 之正则表达式
查看>>
PXC 5.7 mysqldump: Error 2013
查看>>
HID Global荣膺 RFID行业最有影响力国际品牌奖
查看>>
上海市政府颁布智能汽车牌照,蔚来汽车成首批获此资格企业
查看>>
如何让机器理解汉字一笔一画的奥秘?
查看>>
云栖社区2017中国开发者调查报告
查看>>
记录CDH Spark2的spark2-submit的一个No such file or directory问题
查看>>
安装tomcat-7.0.61图文
查看>>