题目背景

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

题目描述

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

输入输出格式

输入格式:

第一行,有两个正整数 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'的时候,表示这是一条更新操作,如果当前A学生的成绩低于B,则把ID为A的学生的成绩更改为B,否则不改动。

输出格式:

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

输入输出样例

输入样例#1:

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
输出样例#1:

5
6
5
9

Solution:

  本题是一道模板题。线段树的单点修改和区间查询。(坑点在于读入,字符串~玄学$scanf$)

代码:

#include<bits/stdc++.h>
#define il inline
#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
const int N=;
int n,m,a[N<<];
il int gi(){
int a=;char x=getchar();bool f=;
while((x<''||x>'')&&x!='-')x=getchar();
if(x=='-')x=getchar(),f=;
while(x>=''&&x<='')a=a*+x-,x=getchar();
return f?-a:a;
}
il void pushup(int rt){a[rt]=max(a[rt<<],a[rt<<|]);}
il void build(int l,int r,int rt){
if(l==r){a[rt]=gi();return;}
int m=l+r>>;
build(lson),build(rson);
pushup(rt);
}
il void update(int p,int x,int l,int r,int rt){
if(l==r){a[rt]=max(a[rt],x);return;}
int m=l+r>>;
if(p<=m)update(p,x,lson);
else update(p,x,rson);
pushup(rt);
}
il int query(int L,int R,int l,int r,int rt){
if(L<=l&&R>=r)return a[rt];
int m=l+r>>;
int ret=;
if(L<=m)ret=max(ret,query(L,R,lson));
if(R>m)ret=max(ret,query(L,R,rson));
return ret;
}
int main()
{
n=gi(),m=gi();
build(,n,);
char c[];int u,v;
while(m--){
scanf("%s",c);u=gi(),v=gi();
if(c[]=='Q')printf("%d\n",query(u,v,,n,));
else update(u,v,,n,);
}
return ;
}

最新文章

  1. JS判断网页是否在微信中打开/
  2. Netruon 理解(11):使用 NAT 将 Linux network namespace 连接外网
  3. 拥抱高效、拥抱 Bugtags 之来自用户的声音(三)
  4. 【BZOJ】2172: Mario填格子
  5. 对字符串算md5
  6. 安装完eclipse,dbwear后,需要在他们解压文件.ini下加上你liux的jdk的安装路径,才能正常使用
  7. Wps的ppt里 让图片按顺序出现 就是点击一下 出现一张照片
  8. PHP程序实现利用rand(1,100)函数产生10个1~100之间的随机数
  9. HDU_2048——全错位排列递推公式
  10. JQ插件开发方法
  11. 函数指针玩得不熟,就不要自称为C语言高手(函数指针是解耦对象关系的最佳利器,还有signal)
  12. 类的更新----MVC设计模式
  13. JVM内存结构简单认知
  14. ip转城市接口,ip转省份接口,ip转城市PHP方法
  15. 【逆向工具】IDA使用2-VS2015版本release查找main函数入口,局部变量
  16. Linux上case用法
  17. C一次将整个文件读入内存
  18. for循环-鼠标移入事件
  19. mysql group replication观点及实践
  20. [C++] 用Xcode来写C++程序[6] Name visibility

热门文章

  1. samba文件共享服务的配置
  2. vue服务端渲染按需引入mint
  3. Hadoop(23)-Yarn资源调度器
  4. Python3爬虫(十一) 爬虫与反爬虫
  5. 46-Identity MVC:登录逻辑实现
  6. 从C到C++ (3)
  7. crontab时间规则
  8. Qt用委托绘制需要的图形的步骤
  9. Scala学习笔记(一):环境搭建
  10. 基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上)