链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1754
分析与总结:
线段树求区间最大值,好像也没什么可讲的。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#define lson(x) (x<<1)
#define rson(x) (lson(x)|1)
using namespace std;
typedef int Type;
const int MAX_NODE = 200005<<2;
struct node{
int left, right;
Type val;
int mid(){return (left+right)>>1;}
bool buttom(){return left==right;}
};
class SegTree{
public:
void build(int cur,int left,int right){
t[cur].left = left;
t[cur].right = right;
if(left == right){
scanf("%d",&t[cur].val);
return;
}
int m = t[cur].mid();
build(lson(cur),left,m);
build(rson(cur),m+1,right);
push_up(cur);
}
void update(int cur,int p,int data){
if(t[cur].buttom()){
t[cur].val = data;
return;
}
int m = t[cur].mid();
if(p <= m)
update(lson(cur),p,data);
else
update(rson(cur),p,data);
push_up(cur);
}
int query(int cur,int left,int right){
if(t[cur].left==left && t[cur].right==right){
return t[cur].val;
}
int m = t[cur].mid();
if(right <= m)
return query(lson(cur),left,right);
else if(left > m)
return query(rson(cur),left,right);
else
return max(query(lson(cur),left,m), query(rson(cur),m+1,right));
}
private:
void push_up(int cur){
t[cur].val = max(t[lson(cur)].val,t[rson(cur)].val);
}
private:
node t[MAX_NODE];
};
SegTree st;
int main(){
int n,m,x,y;
char cmd[5];
while(~scanf("%d%d",&n,&m)){
st.build(1,1,n);
for(int i=0; i<m; ++i){
scanf("%s %d %d",cmd,&x,&y);
if(cmd[0] == 'Q') printf("%d\n", st.query(1,x,y));
else st.update(1,x,y);
}
}
return 0;
}
—— 生命的意义,在于赋予它意义士。
原创http://blog.csdn.net/shuangde800,By
D_Double (转载请标明)
分享到:
相关推荐
【hdu5306】Gorgeous Sequence 线段树区间最值操作-附件资源
hdu 1166线段树代码
hdu 1166线段树
NULL 博文链接:https://128kj.iteye.com/blog/1738772
从简单入门到偏中等的几个题,线段树很灵活,主要懂了lazy操作,其他的自己yy吧。
大量线段树题目 ...hdu 1754 求区间最大值 hdu 1166 求区间和 hdu 1698 成段更新 poj 3468 成段更新 ural 1019 覆盖加统计最长同一个颜色 zoj 2301 和上一题差不多,但是这个染色染的是点,注意染色为空的状况
线段树入门资料,有利于初学者学习,让他们详细了解线段树。
题面 【题目描述】 ...(3)Query(3)Query(3)Query iii jjj ,iii和jjj为正整数,i≤ji\leq ji≤j,表示询问第iii到第jjj个营地的总人数; (4)End(4)End(4)End 表示结束,这条命令在每组数据最后出现;
HDU的1250,主要是利用高精度加法,但是代码有点繁琐,效率不是很高
300+ AC 代码 。 大数 , 线段树 , 字符串 , dp.....
杭电ACMhdu1163
HDU1059的代码
hdu1001解题报告
hdu 1574 passed sorce
HDU的一题........HDU DP动态规
HDU 1022 Train Problem I 附详细思路
hdu2101AC代码
hdu acm 教案 搜索入门 hdu acm 教案 搜索入门