HDU-1754 I hate it (裸线段树)
2016-11-01 20:23
281 查看
代码:
#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> using namespace std; struct node { int maxn; int begin; int end; } tree[880000]; int n, m; int pa[220000]; int build(int root, int begin, int end) { tree[root].begin = begin; tree[root].end = end; if (begin == end) { scanf("%d", &tree[root].maxn); pa[begin] = root; return tree[root].maxn; } else { int left = build(root << 1, begin, begin+(end-begin)/2); int right = build(root << 1 | 1, begin+(end-begin)/2+1, end); tree[root].maxn = max(left, right); return tree[root].maxn; } } void update(int root) { int left = tree[root<<1].maxn; int right = tree[root<<1|1].maxn; tree[root].maxn = max(left, right); if (root != 1) { update(root >> 1); } } int query(int root, int front, int rear) { if (front == tree[root].begin && rear == tree[root].end) { return tree[root].maxn; } else if (front > rear) { return 0; } int middle = tree[root].begin + (tree[root].end - tree[root].begin) / 2; if (rear < middle + 1) { return query(root << 1, front, rear); } else if (front > middle) { return query(root << 1 | 1, front, rear); } else { int left = query(root << 1, front, middle); int right = query(root << 1 | 1, middle+1, rear); return max(left, right); } } int main() { int x, y; char command[110]; while (scanf("%d%d", &n, &m) != EOF) { build(1, 1, n); for (int i = 1; i <= m; i++) { scanf("%s%d%d", command, &x, &y); if (command[0] == 'Q') { int maxn = query(1, x, y); printf("%d\n", maxn); } else if (command[0] == 'U') { tree[pa[x]].maxn = y; update(pa[x]>>1); } } } return 0; }
相关文章推荐
- 【解题报告】 HDU 1754 I Hate It 线段树 单点更新
- HDU 1754 I Hate It(线段树版)
- HDU 1754 I Hate It 线段树
- HDU 1754 I Hate It(线段树)
- hdu 1754 I Hate It (线段树入门题、求区间段的最大值)
- hdu 1754 i hate it(线段树入门)
- hdu 1754 I Hate It(线段树)
- HDU1754 I Hate It(树状数组 or 线段树)
- hdu 1754 I Hate It(线段树,单点更新)
- hdu 1754 I hate it (线段树)
- HDU 1754:I Hate It_线段树
- hdu 1754 I Hate It 线段树 初步
- hdu 1754 -- I Hate It (线段树)
- HDU 1754 I Hate It(线段树) 2984MS水过
- hdu 1754 (线段树)I Hate It
- hdu1754_I Hate It(线段树)
- hdu - 1754 - I Hate It(线段树(单点更新))
- HDU 1754 I Hate It(线段树区间求最值)
- HDU--1754 -- I Hate It [线段树]
- 线段树专辑——hdu 1754 I Hate It