HDU 4325 Flowers(线段树)
来源:互联网 发布:知乎回答最多的人 编辑:程序博客网 时间:2024/05/14 12:03
线段树的区间更新和单点查询。需要注意的是要把区间端点和查询的点都先读入并离散化。
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <vector>#include <map>using namespace std;const int maxn = 100100;int tcase, n, m;int sum[maxn<<2], add[maxn<<2];int s[maxn], t[maxn], q[maxn];map<int, int> mp;int Time[maxn*3];void pushDown(int rt){if (add[rt]) {add[rt<<1] += add[rt];add[rt<<1|1] += add[rt];sum[rt<<1] += add[rt];sum[rt<<1|1] += add[rt];add[rt] = 0;}}void build(int l, int r, int rt){sum[rt] = 0;add[rt] = 0;if (l == r) return ;int m = (l + r) >> 1;build(l, m, rt << 1);build(m + 1, r, rt << 1 | 1);}void update(int l, int r, int rt, int L, int R){if (L <= l && R >= r) {add[rt] += 1;sum[rt] += 1;return ;}pushDown(rt);int m = (l + r) >> 1;if (L <= m) {update(l, m, rt << 1, L, R);}if (R > m) {update(m + 1, r, rt << 1 | 1, L, R);}}int query(int l, int r, int rt, int p){if (l == r) {return sum[rt];}pushDown(rt);int m = (l + r) >> 1;if (p <= m) {return query(l, m, rt << 1, p);} else {return query(m + 1, r, rt << 1 | 1, p);}}int main(){scanf("%d", &tcase);for (int cas = 1; cas <= tcase; ++cas) {printf("Case #%d:\n", cas);scanf("%d%d", &n, &m);int id = 0;for (int i = 1; i <= n; ++i) {scanf("%d%d", &s[i], &t[i]);Time[++id] = s[i];Time[++id] = t[i];}for (int i = 1; i <= m; ++i) {scanf("%d", &q[i]);Time[++id] = q[i];}sort(Time + 1, Time + id + 1);int cnt = 0;Time[++cnt] = Time[1];for (int i = 2; i <= id; ++i) {if (Time[i] != Time[cnt]) {Time[++cnt] = Time[i];}}for (int i = 1; i <= cnt; ++i) {mp[Time[i]] = i;}build(1, cnt, 1);for (int i = 1; i <= n; ++i) {update(1, cnt, 1, mp[s[i]], mp[t[i]]);}for (int i = 1; i <= m; ++i) {printf("%d\n", query(1, cnt, 1, mp[q[i]]));}}return 0;}
- HDU 4325 Flowers(线段树)
- HDU 4325 Flowers (线段树+离散化)
- HDU 4325 Flowers(线段树+离散化)
- hdu 4325 Flowers(线段树+哈希散列)
- hdu 4325 Flowers(线段树+离散化)
- hdu 4325 Flowers(离散化+线段树)
- hdoj Flowers 4325 (线段树)
- HDU 4325&& nyoj 600 Flowers【线段树+坐标离散化】
- hdu 4614 Vases and Flowers(线段树)
- HDU 4614 Vases and Flowers(线段树)#by zh
- hdu 4614 Vases and Flowers (二分 线段树)
- 【HDU-4614】Vases and Flowers(线段树双查询)
- hdu 4614 Vases and Flowers(线段树)
- HDU 4614 Vases and Flowers(线段树、二分)
- HDU 4614 Vases and Flowers (线段树 + 二分)
- HDU-4614-Vases and Flowers(线段树)
- hdu 4614 Vases and Flowers(线段树+二分)
- HDU 4614Vases and Flowers(线段树)
- eclipse中禁用javadoc注释的Format功能
- 1180. Stone Game
- HDOJ 1455 Sticks
- xampp httpd-vhosts.conf配置多个虚拟目录
- hdu 4322 Candy 【多校3】【费用流】
- HDU 4325 Flowers(线段树)
- PHP特级课视频教程_第二集 网站大数据存储 笔记心得
- HDOJ4328-最大子矩阵,悬线法
- iOS代码片段(持续更新)
- Java基础第十一天学习日记_线程、同步、死锁
- arcgis api for flex学习
- C 链表及其接口的实现
- 采用Mutt及msmtp配置进行邮件发送
- hdu1969