HDU 1754-I Hate It(线段树)
来源:互联网 发布:淘宝店粉丝怎么看 编辑:程序博客网 时间:2024/06/05 13:40
I Hate ItCrawling in process...Crawling failedTime Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
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。
在每个测试的第一行,有两个正整数 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 61 2 3 4 5Q 1 5U 3 6Q 3 4Q 4 5U 2 9Q 1 5
Sample Output
5659
Hint
Huge input,the C function scanf() will work better than cin
#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <sstream>#include <algorithm>#include <set>#include <queue>#include <stack>#include <map>using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const double pi= acos(-1.0);#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1const int MAXN = 200010;int s[MAXN<<2];void PushUp(int rt){ s[rt]=max(s[rt<<1],s[rt<<1|1]);}void Build(int l,int r,int rt){ if(l==r){ scanf("%d",&s[rt]); return ; } int mid=(l+r)>>1; Build(lson); Build(rson); PushUp(rt);}void Update(int p,int x,int l,int r,int rt){ if(l==r){ s[rt]=x; return ; } int mid=(l+r)>>1; if(p<=mid) Update(p,x,lson); else Update(p,x,rson); PushUp(rt);}int Query(int ll,int rr,int l,int r,int rt){ if(ll<=l&&rr>=r){ return s[rt]; } int mid=(l+r)>>1; int ans=-inf; if(ll<=mid) ans=max(ans,Query(ll,rr,lson)); if(rr>mid) ans=max(ans,Query(ll,rr,rson)); return ans;}int main(){ int n,m; int a,b; int ans; char str[10]; while(~scanf("%d %d",&n,&m)){ Build(1,n,1); while(m--){ scanf("%s",str); if(str[0]=='Q'){ scanf("%d %d",&a,&b); ans=Query(a,b,1,n,1); printf("%d\n",ans); } else{ scanf("%d %d",&a,&b); Update(a,b,1,n,1); } } } return 0;}
0 0
- 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 [线段树]
- 【线段树】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 线段树
- 探空火箭设计感想
- lua coroutine & skynet
- Fragment使用及生命周期
- wordpress调用指定分类文章
- HTTP 协议详解1
- HDU 1754-I Hate It(线段树)
- Linux常用命令
- 调用wordpress指定分类文章2种方法
- poj 2057 树形DP+一点贪心
- BOJ 2014新生暑假个人排位赛11 整合
- 我的android之旅!
- jdk中开发时,被我遗忘的细节知识记录
- 黑马程序员——Collection集合
- 梦想与现实