HDU 1754 I hate it 分段树Segment Tree题解
来源:互联网 发布:mp3电路图 不用单片机 编辑:程序博客网 时间:2024/06/06 03:49
给出一段数据,然后要更新单个数据,会询问一段数据中的最大值。
又是一道分段树操作。渐渐熟手了。
#pragma once#include <cstdio>#include <algorithm>using namespace std;class IHateIt_1754_1{static const int SIZE = 200001;int *segTree;//不要使用segTree[SIZE<<2]inline int lChild(int r) { return r<<1; }inline int rChild(int r) { return r<<1|1; }void pushUp(int rt){segTree[rt] = max(segTree[lChild(rt)], segTree[rChild(rt)]);}void build(int l, int r, int rt){if (l == r){scanf("%d", &segTree[rt]);return ;}int m = l + ((r-l)>>1);build(l, m, lChild(rt));build(m+1, r, rChild(rt));pushUp(rt);}void update(const int stu, const int score, int l, int r, int rt){if (l == r){segTree[rt] = score;return ;}int m = l + ((r-l)>>1);if (stu <= m) update(stu, score, l, m, lChild(rt));else update(stu, score, m+1, r, rChild(rt));pushUp(rt);}int query(const int L, const int R, int l, int r, int rt){if (L <= l && r <= R) return segTree[rt];int m = l + ((r-l)>>1);int res = 0;if (L <= m) res = query(L, R, l, m, lChild(rt));//注意下标if (R > m) res = max(res, query(L, R, m+1, r, rChild(rt)));return res;}public:IHateIt_1754_1() : segTree((int *) malloc (sizeof(int) * (SIZE<<2))){int N, M;while (scanf("%d %d", &N, &M) != EOF){build(1, N, 1);while (M--){char op[2];int a, b;scanf("%s%d%d", op, &a, &b); if (op[0] == 'U') update(a, b, 1, N, 1);else printf("%d\n",query(a, b, 1, N, 1));}}}~IHateIt_1754_1(){if (segTree) free(segTree);}};
1 0
- HDU 1754 I hate it 分段树Segment Tree题解
- HDU 1754 - I Hate It - Segment Tree
- HDU 1754 I Hate It (Splay tree和Segment tree)
- hdu 1754 I Hate It (splay tree伸展树)
- 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
- 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 线段树
- 短小精悍的线性时间素数筛法
- 如何确定域在结构中的字节偏移
- uPortal配备CAS,配置登陆、登出链接
- 驱动开发之 #pragma alloc_text
- 2190: [SDOI2008]仪仗队
- HDU 1754 I hate it 分段树Segment Tree题解
- 调整和删除Win7休眠文件Hiberfil.sys释放C盘
- do...while(0)的妙用
- 无处不在的百度招聘
- JavaMail邮件的发送
- buffer busy waits
- SIFT、SURF及相关特征描述子概述
- 我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。为什么如下的代码((int *)p)++; 不行?
- C++ Primer笔记6_STL之泛型算法