Description

很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。
这让很多学生很反感。

不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。

Input

本题目包含多组测试,请处理到文件结束。

在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5000 ),分别代表学生的数目和操作的数目。

学生ID编号分别从1编到N。

第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩。

接下来有M行。每一行有一个字符 C (只取'Q'或'U') ,和两个正整数A,B。

当C为'Q'的时候,表示这是一条询问操作,它询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少。

当C为'U'的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。

Output

对于每一次询问操作,在一行里面输出最高成绩。

Sample Input

5 6
1 2 3 4 5
Q 1 5
U 3 6
Q 3 4
Q 4 5
U 2 9
Q 1 5

Sample Output

5
6
5
9 模板题,改改就行了!
注意!!!没事别读%c,容易出事,所以都转化成字符串读入
代码如下:
 #include <bits/stdc++.h>

 using namespace std;
#define M 200200
#define inf 0x3f3f3f3f
struct segTree
{
int l,r,elem;
int mid()
{
return (l+r)/;
}
}tree[*M];
int n,m,ans;
void buildTree (int now,int left,int right)
{
tree[now].l=left;
tree[now].r=right;
if (left==right)
{
scanf("%d",&tree[now].elem);
return;
}
int middle=tree[now].mid();
buildTree(now<<,left,middle);
buildTree(now<<|,middle+,right);
tree[now].elem=max(tree[now<<].elem,tree[now<<|].elem);
}
void update (int now,int left,int right,int x,int change)
{
if (left==right)
{
tree[now].elem=change;
return;
}
int middle=tree[now].mid();
if (x<=middle)
update(now<<,left,middle,x,change);
else
update(now<<|,middle+,right,x,change);
tree[now].elem=max(tree[now<<].elem,tree[now<<|].elem);
}
void query (int now,int left,int right,int L,int R)
{
if (L<=left&&right<=R)
{
ans=max(ans,tree[now].elem);
return ;
}
int middle=tree[now].mid();
if (R<=middle)
query(now<<,left,middle,L,R);
else if (L>middle)
query(now<<|,middle+,right,L,R);
else
{
query(now<<,left,middle,L,R);
query(now<<|,middle+,right,L,R);
}
}
int main()
{
//freopen("de.txt","r",stdin);
while (~scanf("%d%d",&n,&m))
{
buildTree(,,n);
char op[];
while (m--)
{
int x,y;
scanf("%s",op);
scanf("%d%d",&x,&y);
if (op[]=='U')
update(,,n,x,y);
else
{
ans=-inf;
query(,,n,x,y);
printf("%d\n",ans);
}
}
}
return ;
}
												

hdu1574 I Hate It (线段树,查询区间最大值)的更多相关文章

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

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

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

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

  3. HDU 2795 Billboard 线段树,区间最大值,单点更新

    Billboard Time Limit: 20000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

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

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

  5. 【线段树查询区间最值】poj 3264 Balanced Lineup

    #include<cstdio> #include<algorithm> using namespace std; ; struct Seg { int l,r,mi,ma; ...

  6. hdu1754线段树维护区间最大值

    #include <iostream> #include <cstdio> using namespace std; #define MAXN 200005 int N,M; ...

  7. hdoj 5443 The Water Problem【线段树求区间最大值】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5443 刷道水题助助兴 #include<stdio.h> #include<stri ...

  8. hdoj 1166 敌兵布阵【线段树求区间最大值+单点更新】

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

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

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

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

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

随机推荐

  1. springBoot02- 配置文件读取测试

    1.照例登陆http://start.spring.io/ ,改个项目名(Artifact),然后下载导入Eclipse 2. 项目结构如下, 在pom中添加web依赖(不添加,就找不到RestCon ...

  2. ARGB色彩模式

    看到#ff ff ff 00 00这种 就是啦 .开头两位表示透明度.

  3. 超微主板IPMI的使用

    https://blog.nicky1605.com/supermicro-motherboards-use-ipmi.html IPMI(智能平台管理接口)现在大部分都是集成到主板上了,我们利用IP ...

  4. PCB六层板学习(一)

    一.原理图的网表导出及版本转换 安装Cadence后,打开RK3288的原理图. 首先点击rk3288-mid.dsn >> 然后有一个Create netlist的图标(当然咋Tools ...

  5. iview input实现默认获取焦点并选中文字

    1. 业务背景 配置页面,可新建和复制任务:当复制任务的时候,要把名字的input框默认获取焦点,并全选任务名.效果如下: 2. 代码实现 <template> <Form :mod ...

  6. spfa模板(洛谷3371)

    洛谷P3371 //spfa:求s到各点的最短路,可含负权边 #include <cstdio> using namespace std; ,max_m=,inf=; struct ety ...

  7. 暑期训练 CF套题

    CodeForces 327A 题意:有n个数,都是0或1,然后必须执行一次操作,翻转一个区间,里面的数0变1,1变0,求最多1的数量 思路:最开始我写的最大字段和,后面好像写搓了,然后我又改成暴力, ...

  8. python中chr()函数和ord()函数的用法

    一,chr()函数 格式:Chr(<数值表达式>)   说明:函数返回值类型为String,其数值表达式值取值范围为0~255.   例如:Print Chr(78),结果显示:N.   ...

  9. linux执行时间段内日志关键字搜索

    sed -n '/起始时间/,/结束时间/p' 日志文件 | grep '关键字' 查询文件debug.log在2019-11-18 08:00:00~2019-11-18 08:21:00时间段内e ...

  10. C# DotNetZip压缩单、多文件以及文件夹

    有些项目为了更好的用户体验,会把下载文件做成一个压缩的文件,直接下载,免得去一个个的点击下载文件.网上有很多压缩文件的方法,也有第三方的分装DLL文件,本文主要介绍DotNetZip压缩方法. Dot ...