hdu 2528 Mayor's posters(线段树+离散化)
来源:互联网 发布:百度网络硬盘登陆 编辑:程序博客网 时间:2024/06/05 15:10
参考:http://blog.csdn.net/non_cease/article/details/7383736
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;}
0 0
- hdu 2528 Mayor's posters(线段树+离散化)
- 【线段树+离散化】Mayor's Posters
- 线段树+离散化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 线段树+离散化
- 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(线段树+离散化)
- POJ 2528 Mayor's posters 线段树+离散化
- poj - 2528 - Mayor's posters 线段树+离散化
- Html--部分标签的使用
- 【51Nod】1008 N的阶乘 mod P
- linux下TCP/IP及内核参数优化调优(TIME_WAIT)
- opencv结合MFC打开图片
- Delphi THTTPRIO 控件调用webservice超时问题
- hdu 2528 Mayor's posters(线段树+离散化)
- 小心陷阱,少走弯路!游戏职场中21条的建议
- Java系列笔记(4)
- 使用dtc将dtb转换成dts
- Hadoop-2.7.3 HA搭建
- LeetCode (Substring with Concatenation of All Words)
- 对象关系Lookup与Master-Detail
- 【触摸事件】单击移动图片+双指放大缩小图片
- 蓝桥杯 方格分割(dfs)