hdu 2528 Mayor's posters(线段树+离散化)
2017-04-26 19:29
375 查看
参考:http://blog.csdn.net/non_cease/article/details/7383736
https://wenku.baidu.com/view/71fc1659ba1aa8114431d97b.html
第一次做线段树离散化的题目。。。。
wa了好多次,才发现是数组开小了。。
https://wenku.baidu.com/view/71fc1659ba1aa8114431d97b.html
第一次做线段树离散化的题目。。。。
wa了好多次,才发现是数组开小了。。
#include <cstdio> #include <cstring> #include <algorithm> const int MAXN = 11010; int li[MAXN],ri[MAXN]; int x[MAXN*3]; int col[MAXN<<4]; bool hash[MAXN]; int cnt; int binSearch(int l, int r, int val) { int lb = l; int ub = r-1; while(lb <= ub) { int mid = (lb+ub)/2; if(x[mid] < val) lb = mid+1; else if(x[mid] > val) ub = mid-1; else return mid; } return -1; } void pushDown(int rt) { if(col[rt] != -1) { col[rt<<1] = col[rt<<1|1] = col[rt]; col[rt] = -1; } } void insert(int L, int R, int c, int l, int r, int rt) { if(L <= l && r <= R) { col[rt] = c; return; } pushDown(rt); int mid = (l+r) >> 1; if(L <= mid) insert(L,R,c,l,mid,rt<<1); if(R > mid) insert(L,R,c,mid+1,r,rt<<1|1); } void query(int l, int r, int rt) { if(col[rt] != -1) { if(!hash[col[rt]]) { hash[col[rt]] = true; ++cnt; } return; } if(l == r) return; int mid = (l+r) >> 1; query(l,mid,rt<<1); query(mid+1,r,rt<<1|1); } int main() { int t,n; scanf("%d",&t); while(t--) { scanf("%d",&n); int nn = 0; for(int i = 0; i < n; ++i) { scanf("%d %d",&li[i],&ri[i]); x[nn++] = li[i]; x[nn++] = ri[i]; } std::sort(x,x+nn); int m = std::unique(x,x+nn)-x; for(int i = m-1; i > 0; --i) if(x[i] != x[i-1] + 1) x[m++] = x[i-1]+1; std::sort(x,x+m); memset(col,-1,sizeof(col)); for(int i = 0; i < n; ++i) { int l = binSearch(0,m,li[i]); int r = binSearch(0,m,ri[i]); //离散化坐标后,就是从0开始的了 insert(l,r,i,0,m,1); } memset(hash,false,sizeof(hash)); cnt = 0; query(0,m,1); printf("%d\n",cnt); } return 0; }
相关文章推荐
- 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(线段树+离散化)
- POJ 2528 Mayor's posters 线段树 离散化
- POJ 2528 Mayor's posters (区间离散化、线段树区间染色)
- poj 2528 Mayor's posters(线段树离散化)
- PKU 2528 Mayor's posters 【离散化+线段树】
- poj 2528 Mayor's posters (线段树+离散化+hash)
- POJ 2528 Mayor's posters (线段树区间更新 + 离散化)
- POJ 2528 Mayor's posters (线段树 区间更新+离散化)
- pku 2528 Mayor's posters(线段树+离散化)