[HIHO1079]离散化(线段树、染色)
题目链接:http://hihocoder.com/problemset/problem/1079
MD坑爹,线段查询的时候左闭右开。插完挨个点找一遍扔set里,注意没染色的情况。
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 #define lson l, m, rt << 1 5 #define rson m + 1, r, rt << 1 | 1 6 const int maxn = 200100; 7 int sum[maxn<<2]; 8 9 void pushDOWN(int rt) { 10 if(sum[rt] != -1) { 11 sum[rt<<1] = sum[rt<<1|1] = sum[rt]; 12 sum[rt] = -1; 13 } 14 } 15 16 void update(int L, int R, int c, int l, int r, int rt) { 17 if(L <= l && r <= R) { 18 sum[rt] = c; 19 return; 20 } 21 pushDOWN(rt); 22 int m = (l + r) >> 1; 23 if(L <= m) update(L, R, c, lson); 24 if(R > m) update(L, R, c, rson); 25 } 26 27 int query(int p, int l, int r, int rt) { 28 if(l == r) return sum[rt]; 29 pushDOWN(rt); 30 int m = (l + r) >> 1; 31 if(p <= m) return query(p, lson); 32 else return query(p, rson); 33 } 34 35 int h[maxn], hcnt; 36 int n, m; 37 int lo[maxn], hi[maxn]; 38 39 int id(int x) { 40 return lower_bound(h, h+hcnt, x) - h + 1; 41 } 42 43 int main() { 44 // freopen("in", "r", stdin); 45 while(~scanf("%d%d",&n,&m)) { 46 hcnt = 0; 47 memset(sum, -1, sizeof(sum)); 48 for(int i = 0; i < n; i++) { 49 scanf("%d%d",&lo[i], &hi[i]); 50 h[hcnt++] = lo[i], h[hcnt++] = hi[i]; 51 } 52 sort(h, h+hcnt); hcnt = unique(h, h+hcnt) - h; 53 m = hcnt; 54 for(int i = 0; i < n; i++) { 55 update(id(lo[i]), id(hi[i])-1, i, 1, m, 1); 56 } 57 set<int> s; 58 s.insert(-1); 59 for(int i = 1; i <= m; i++) { 60 s.insert(query(i, 1, m, 1)); 61 // printf("%d ", query(i, 1, m, 1)); 62 } 63 // printf("\n"); 64 printf("%d\n", s.size()-1); 65 } 66 return 0; 67 }
转载于:https://www.cnblogs.com/kirai/p/6166194.html
[HIHO1079]离散化(线段树、染色)相关推荐
- poj/OpenJ_Bailian - 2528 离散化+线段树
传送门:http://bailian.openjudge.cn/practice/2528?lang=en_US //http://poj.org/problem?id=2528 题意: 给你n长海报 ...
- hdu 5023 线段树染色问题
题目链接 A Corrupt Mayor's Performance Art Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 100000/1 ...
- 【BZOJ1645】[Usaco2007 Open]City Horizon 城市地平线 离散化+线段树
[BZOJ1645][Usaco2007 Open]City Horizon 城市地平线 Description Farmer John has taken his cows on a trip to ...
- [牛客网#35D 树的距离]离散化+线段树合并
[牛客网#35D 树的距离]离散化+线段树合并 分类:Data Structure SegMent Tree Merge 1. 题目链接 [牛客网#35D 树的距离] 2. 题意描述 wyf非常喜欢树 ...
- 850. 矩形面积 II:扫描线+离散化+线段树
Difficulty: hard 标签: 扫描线, 离散化, 线段树 题目链接 力扣 题目解析 面试代码 /** x轴方向使用扫描线,y轴方向使用线段树维护扫描线的长度和每个区间覆盖的次数.由于y轴方 ...
- 贴海报 (线段树染色-离散化
n(n<=10000) 个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000) .求出最后还能看见多少张海报. 虽然之前学过离散化,但用的时 ...
- poj 2528 离散化+线段树 hdu 1698 线段树 线段树题目类型一:染色计数 外加离散化
第一次听到离散化是今年省赛的时候,一道矩形并的题,很水,就两个矩形... 今天再去做线段树已经发现离散化忘得差不多了...水逼的悲哀啊... 先看简单点的hdu 1698 http://acm.hdu ...
- 线段树染色问题(例题为poj2777)
染色问题加离散化是poj2528,过后我会放出来的 关于离散的详细解释参考博客:https://blog.csdn.net/iwts_24/article/details/81603603 区域染色覆 ...
- POJ - 2528 Mayor's posters (浮水法+线段树/离散化+线段树)
题目链接 题意: n(n<=10000)个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000) .求出最后还能看见多少张海报. 分析1 离散 ...
- Mayor's posters POJ - 2528 (离散化+线段树)
题意: 在1~10000000这个区间中读取n个海报的区间信息,后面的海报会覆 盖前面的海报,问最后能看到几张海报.(本题是一道bug题下面会提) 题目: The citizens of Byteto ...
最新文章
- 量子纠缠背后的故事(廿五):深藏幕后的神秘力量
- Dockerfile里的VOLUMES关键字
- 合工大五套卷_2020合工大超越数一五套卷第一套感想
- 看完就会明白windows RT推出的原因、它和window 8到底有些什么区别、微软有什么战略企图--有关于微软Windows RT 你不知道的那些事
- java垃圾回收 分代_Java-垃圾回收机制-通用的分代垃圾回收机制
- 整数倒转问题的算法实现
- 深度强化学习之演员—评论家(Actor—Critic)
- Linux 5.7将进一步支持龙芯处理器
- IIS下载无后缀文件的设置
- Java中映射怎么实现_Java中的映射是怎么实现的
- java手机下载软件_山寨手机java软件怎么下载?
- 3D 旋转相册 立方体的盒子 相册(源码分享)
- 解决win 7拷贝共享文件很慢
- Vue仿支付宝首页(更多)添加、删除、拖拽、点击等功能
- 使用PS给PDF文件加水印
- 最基础的jvav的集合框架组成
- 蚀刻后残留物和光刻胶去除技术
- 安卓街机模拟器对战源码修改详解(1)
- 【求职】格灵深瞳 Java 方向面经
- 计算机组成原理实验二