#include <iostream>
#include <cstdio>
using namespace std; #define MAXN 200005 int N,M; int grade[MAXN]; struct node
{
int left;
int right;
int max;
}Tree[MAXN*20]; int Build(int start,int end,int root)
{
Tree[root].left = start;
Tree[root].right = end; if(start == end)
{
Tree[root].max = grade[start];
return Tree[root].max;
} int mid = (start + end)/2; int a = Build(start,mid,root*2);
int b = Build(mid+1,end,(root*2)+1); return Tree[root].max = max(a,b);
} int find(int start,int end,int root)
{
if(start > Tree[root].right || end < Tree[root].left)
return 0; if(start <= Tree[root].left && Tree[root].right <= end)
return Tree[root].max; int a = find(start,end,root*2);
int b = find(start,end,(root*2)+1); return max(a,b);
} int update(int root,int pos,int value)
{
if(pos < Tree[root].left || pos > Tree[root].right)
return Tree[root].max; if(Tree[root].left == pos && Tree[root].right == pos)
return Tree[root].max = value; int a = update(root*2,pos,value);
int b = update((root*2)+1,pos,value); Tree[root].max = max(a,b);
return Tree[root].max;
} int main()
{
while(scanf("%d%d",&N,&M)!=EOF)
{
for(int i = 1; i <= N; i++)
{
scanf("%d",&grade[i]);
}
Build(1,N,1);
char ch;
int A,B;
while(M--)
{
getchar();
scanf("%c%d%d",&ch,&A,&B);
if(ch == 'Q')
cout<<find(A,B,1)<<endl;
else if(ch == 'U')
{
grade[A] = B;
update(1,A,B);
} }
}
return 0;
}

hdu1754线段树维护区间最大值的更多相关文章

  1. 51nod 1376【线段树维护区间最大值】

    引自:wonter巨巨的博客 定义 dp[i] := 以数字 i(不是下标 i)为结尾的最长上升长度 然后用线段树维护 dp[i]: 每个节点维护 2 个信息,一个是当前区间的最大上升长度,一个是最大 ...

  2. HDU 2795 Billboard 【线段树维护区间最大值&&查询变形】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=2795 Billboard Time Limit: 20000/8000 MS (Java/Others) ...

  3. 【HDOJ 1337】I Hate It(线段树维护区间最大值)

    Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写 ...

  4. 洛谷P3113 [USACO14DEC]马拉松赛跑Marathon_Gold 线段树维护区间最大值 模板

    如此之裸- Code: #include<cstdio> #include<cstring> #include<cmath> #include<algorit ...

  5. POJ.2763 Housewife Wind ( 边权树链剖分 线段树维护区间和 )

    POJ.2763 Housewife Wind ( 边权树链剖分 线段树维护区间和 ) 题意分析 给出n个点,m个询问,和当前位置pos. 先给出n-1条边,u->v以及边权w. 然后有m个询问 ...

  6. Can you answer these queries V SPOJ - GSS5 (分类讨论+线段树维护区间最大子段和)

    recursion有一个整数序列a[n].现在recursion有m次询问,每次她想知道Max { A[i]+A[i+1]+...+A[j] ; x1 <= i <= y1 , x2 &l ...

  7. 线段树维护区间前k小

    线段树维护区间前k小 $ solution: $ 觉得超级钢琴太麻烦?在这里线段树提供一条龙服务 . 咳咳,开始讲正题!这道题我们有一个和超级钢琴复杂度一样 $ ~O(~\sum x\times lo ...

  8. CodeForces - 587E[线段树+线性基+差分] ->(线段树维护区间合并线性基)

    题意:给你一个数组,有两种操作,一种区间xor一个值,一个是查询区间xor的结果的种类数 做法一:对于一个给定的区间,我们可以通过求解线性基的方式求出结果的种类数,而现在只不过将其放在线树上维护区间线 ...

  9. HDU-1754 I Hate It(线段树,区间最大值)

    很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.  这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然,老师 ...

随机推荐

  1. HTML5学习(十一)---服务器发送事件

    参考教程:http://www.w3school.com.cn/html5/html_5_serversentevents.asp HTML5 服务器发送事件(server-sent event)允许 ...

  2. POJ2528 线段树的区间操作

    首先应该对该[0,10000000]进行离散化 即先将点集进行排序,然后从小到大缩小其中的间距,使得最后点数不会超过2*n 然后就是线段树操作 只需进行染色,然后最后用nlgn进行一个个查询颜色记录即 ...

  3. sharedevelop iis express

    sharedevelop 的IIS express的配置文件在 %userprofile%\documents\IISExpress\config\applicationhost.config 自动会 ...

  4. Adobe RIA

    一:1)Adobe® Flash® Player 是一个跨平台.基于浏览器的应用程序运行时,它可以跨屏幕和浏览器.原汁原味地呈现具有表现力的应用程序.内容和视频,当前版本Flash Player 10 ...

  5. js jquery版本的 金额千分位转换函数(非正则,效率极高)

    没想到js里面没有 金额千分位格式化的处理函数(例:1,234.01 这样的格式),网上搜了一圈,都是使用正则的方式处理的.正则的效率不敢恭维啊,又耗费资源速度又慢(虽然处理起来会直观一些). 因此专 ...

  6. 【转】[MTK软件原创] [SELinux] 如何设置确认selinux模式

    原文网址:http://bbs.16rd.com/thread-54766-1-1.html [Description] linux SELinux 分成Enforce 以及 Permissive 两 ...

  7. SqlServer中decimal(numeric )、float 和 real 数据类型的区别[转]

    decimal(numeric )             同义,用于精确存储数值 float 和 real                      不能精确存储数值   decimal 数据类型最 ...

  8. 错误 1 在应用程序级别之外使用注册为 allowDefinition='

    原文:错误 1 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的,银流沙 昨天运行一个.NET网站项目时,出现了以下问题: 在应 ...

  9. Kettle简介

    ETL和Kettle简介     ETL即数据抽取(Extract).转换(Transform).装载(Load)的过程.它是构建数据仓库的重要环节.数据仓库是面向主题的.集成的.稳定的且随时间不断变 ...

  10. VS2013 :IntelliSense: 不允许使用不完整的类型

    出现上述情况,一般是存在对应的头文件,但是没有引用造成的. 引用的时候要注意头文件的顺序, 本项目中的头文件一般先引入,也就是用双引号#include "xxx.h",然后是系统中 ...