POJ 2528 Mayor's posters(离散化+区间set线段树)
来源:互联网 发布:ubuntu怎么连接校园网 编辑:程序博客网 时间:2024/05/16 15:42
题意:市长选举,在一块可以视为宽为1的矩形中贴自己的海报,后贴的海报会覆盖之前的海报,问贴完之后能看到多少块海报。
思路:留意到这个矩形的最大长度可以去到100000000,而n最多为10000,所以可以离散化一下,然后区间set开搞就可以了
Trick:这里的数组要开大一点,不然会迷之RE
#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>using namespace std;#define lson i*2,l,m#define rson i*2+1,m+1,rconst int maxn = 100000+100;int setv[maxn*4];int vis[maxn*4];int num;void PushDown(int i){if (setv[i]!=-1){setv[i*2]=setv[i*2+1]=setv[i];setv[i]=-1;}}void update(int ql,int qr,int v,int i,int l,int r){if (ql<=l && qr>=r){setv[i]=v;return;}PushDown(i);int m = (l+r)/2;if (ql<=m)update(ql,qr,v,lson);if (m<qr) update(ql,qr,v,rson);}void query(int i,int l,int r){if (setv[i]!=-1){if (!vis[setv[i]])num++;vis[setv[i]]=1;return;}if (l==r)return;int m = (l+r)/2;query(lson);query(rson);}struct Node{int l,r;}node[maxn];int b[maxn];int main(){ int T; scanf("%d",&T); while (T--) { int n; scanf("%d",&n); int k = 1; memset(setv,-1,sizeof(setv)); for (int i = 1;i<=n;i++) { scanf("%d%d",&node[i].l,&node[i].r); b[k++]=node[i].l; b[k++]=node[i].r; } sort(b+1,b+k); int size = unique(b+1,b+k)-(b+1); for (int i = 1;i<=n;i++) { node[i].l=upper_bound(b+1,b+1+size,node[i].l)-b-1; node[i].r=upper_bound(b+1,b+1+size,node[i].r)-b-1;// printf("%d %d\n",node[i].l,node[i].r); update(node[i].l,node[i].r,i,1,1,size); } num=0; memset(vis,0,sizeof(vis)); query(1,1,size); printf("%d\n",num); }}
0 0
- POJ 2528 Mayor's posters 区间离散化线段树
- poj 2528 Mayor's posters(线段树+区间离散化)
- POJ 2528 Mayor's posters(离散化+区间set线段树)
- POJ 2528 Mayor's posters(离散化+区间set线段树)
- poj 2528 Mayor's posters (线段树+区间离散)
- POJ-2528Mayor's posters(离散+线段树区间覆盖)
- 线段树区间更新,区间统计+离散化 POJ 2528 Mayor's posters
- POJ 2528 Mayor's posters (区间离散化、线段树区间染色)
- POJ.2528 Mayor's posters (线段树 区间更新 区间查询 离散化)
- poj 2528 Mayor's posters 线段树+离散化 区间更新
- poj 2528 Mayor's posters(线段树+离散化+区间统计)
- poj 2528 Mayor's posters(线段树区间更新+离散化)经典题目,较难。。。
- POJ 2528 Mayor's posters 线段树离散化+区间更新
- POJ 2528-Mayor's posters(线段树区间更新+离散化)
- POJ 2528 Mayor's posters 线段树的区间覆盖 离散化
- POJ 2528 Mayor's posters (离散化+线段树区间更新)
- POJ 2528-Mayor's posters(线段树区间染色+离散化)
- poj 2528 Mayor's posters(线段树区间覆盖、离散化)
- 必备收款工具
- 个人书签(不断更新)
- cocos2dx的jni使用
- 今天被刺激到了。
- 2016-03-07
- POJ 2528 Mayor's posters(离散化+区间set线段树)
- 浅谈如何用Java操作MongoDB
- cf#345-B - Beautiful Paintings-暴力
- urllib
- delphi的日志组件log4d的内存泄露问题
- 15.自动加载配置
- Web前端开发1
- 【敏捷开发】常用工具
- java基础回顾笔记-io流1