POJ 2528 Mayor's posters 线段树 区间更新 + 简单哈希函数
来源:互联网 发布:seo why 编辑:程序博客网 时间:2024/06/05 12:42
区间维护是否被覆盖
贴代码(AC,110ms)
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define lson l, m, rt << 1#define rson m + 1, r, rt << 1 | 1using namespace std;const int MAX = 1e5 + 50;bool peo[MAX];int mark[MAX < 2], cnt, h[MAX * 3];int lt[MAX], rt[MAX];void pushDown(int rt){ if(mark[rt] != -1){ mark[rt << 1] = mark[rt << 1 | 1] = mark[rt]; mark[rt] = -1; }}void update(int qL, int qR, int p, int l, int r, int rt){ if(qL <= l && r <= qR){ mark[rt] = p; return; } pushDown(rt); int m = (l + r) >> 1; if(qL <= m) update(qL, qR, p, lson); if(m < qR) update(qL, qR, p, rson);}void query(int l, int r, int rt){ if(mark[rt] != -1){ if(!peo[mark[rt]]) cnt++; peo[mark[rt]] = true; return; } if(l == r) return; int m = (l + r) >> 1; query(lson); query(rson);}int hash(int key, int n){ int l = 0, r = n - 1; while(l <= r){ int m = (l + r) >> 1; if(key == h[m]) return m; if(key > h[m]) l = m + 1; else r = m - 1; } return -1;}int main(){ int ca, n, m, len, a, b; scanf("%d", &ca); while(ca--){ memset(mark, -1, sizeof(mark)); memset(peo, false, sizeof(peo)); scanf("%d", &n); m = 0, len = 1, cnt = 0; for(int i = 0; i < n; ++i){ scanf("%d%d", lt + i, rt + i); h[m++] = lt[i], h[m++] = rt[i]; } sort(h, h + m); for(int i = 1; i < m; ++i) if(h[i] != h[i - 1]) h[len++] = h[i]; for(int i = len - 1; i > 0; --i){ if(h[i] != h[i - 1] + 1) h[len++] = h[i - 1] + 1; } sort(h, h + len); for(int i = 0; i < n; ++i){ a = hash(lt[i], len); b = hash(rt[i], len); update(a + 1, b + 1, i, 1, len , 1); } query(1, len, 1); printf("%d\n", cnt); } return 0;}
0 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-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 // 线段树 区间更新 离散化
- 大学英语六级听力——020(Where people live) .
- DB2手工创建库
- 安装myeclipse8.5版 fatjar包遇到的问题
- php-socket编程代码实例
- Mac系统下Android SDK无法更新解决办法
- POJ 2528 Mayor's posters 线段树 区间更新 + 简单哈希函数
- 【慎思堂】之JS牛腩总结
- dup()以及dup2()函数介绍
- 互联网将如何颠覆17个传统行业?
- Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数
- 协调器启动网络(一)
- Codeforces Round #214 (Div. 2) C. Dima and Salad (背包变形)
- springMVC 新特性
- 2013求职面试题