HDU I Hate It
来源:互联网 发布:淘宝店铺总销量怎么看 编辑:程序博客网 时间:2024/06/04 17:51
题目意思很简单,很裸的线段树。
有是一道单点更新问题,是单点更新+区间最大值。
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;#define L(x) (x<<1)#define R(x) (x<<1|1)#define lson lft,mid,rt << 1#define rson mid+1,rht,rt << 1 | 1#define MID(a,b) (a+((b-a)>>1))#define INF 1<<30const int MAXN = 200005;struct Node{ int lft,rht,mx; int mid(){return MID(lft,rht);}};Node tree[4*MAXN];int y[MAXN],n,m;class Segtree{public: void Build(int lft,int rht,int rt){ tree[rt].lft = lft; tree[rt].rht = rht; tree[rt].mx = -INF; if(lft == rht) tree[rt].mx = y[lft]; else{ int mid = tree[rt].mid(); Build(lson); Build(rson); tree[rt].mx = max(tree[L(rt)].mx,tree[R(rt)].mx); } } void Update(int pos,int rt,int val){ int lft = tree[rt].lft,rht = tree[rt].rht; if(lft == rht){ tree[rt].mx = val; } else{ int mid = tree[rt].mid(); if(pos <= mid) Update(pos,L(rt),val); else Update(pos,R(rt),val); tree[rt].mx = max(tree[L(rt)].mx,tree[R(rt)].mx); } } int Query(int st,int ed,int rt){ int lft = tree[rt].lft,rht = tree[rt].rht; if(st <= lft&&rht <= ed) return tree[rt].mx; else{ int mid = tree[rt].mid(); int mx1 = -INF,mx2 = -INF; if(st <= mid) mx1 = Query(st,ed,L(rt)); if(ed > mid) mx2 = Query(st,ed,R(rt)); return max(mx1,mx2); } }};int main(){ while(~scanf("%d%d",&n,&m)) { Segtree seg; char op[5]; int a,b; for(int i = 1;i <= n;++i) scanf("%d",&y[i]); seg.Build(1,n,1); while(m--){ scanf("%s%d%d",op,&a,&b); if(op[0] == 'Q') printf("%d\n",seg.Query(a,b,1)); else seg.Update(a,1,b); } } return 0;}
1 0
- HDU I Hate It
- I Hate It HDU
- I Hate It HDU
- I Hate It (HDU
- I Hate It HDU
- I hate it.hdu
- I Hate It HDU
- I Hate It HDU
- I Hate It HDU
- 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
- thinkphp框架中的(大)文件上传
- Android UI开发详解之ActionBar
- JMX之通过JConsole连接JMXServer管理MBean
- C#中protected用法详解
- hdu 1150 Machine Schedule (经典二分匹配)
- HDU I Hate It
- 代码如何提交到JobTracker的?
- Android非常好用的组件或者框架
- Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
- redhat9.0 tftp 服务器 配置
- ARC引用非ARC文件以及非ARC引用ARC文件的参数设置
- HDU 4812 D Tree 树的点分治
- 20140805&20140806
- hdu 2577