HDU-1754-I Hate It
来源:互联网 发布:李嫣兔唇原因知乎 编辑:程序博客网 时间:2024/05/16 09:06
I Hate It
Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 82190 Accepted Submission(s): 31605
Total Submission(s): 82190 Accepted Submission(s): 31605
Problem 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
5659HintHuge input,the C function scanf() will work better than cin
Author
linle
线段树做法:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=2e6;int Max;struct node{int max,min,l,r,sum;}d[maxn*3];void PushUp(int o){d[o].max=max(d[o*2].max,d[o*2+1].max);}void Build(int o,int l,int r)//建树 {d[o].l=l;d[o].r=r;if(l==r){int t; scanf("%d",&t);d[o].max=d[o].min=d[o].sum=t;return ;}int mid=(l+r)/2;Build(o*2,l,mid);Build(o*2+1,mid+1,r);PushUp(o); }void Update(int o,int l,int r,int x,int y)//改点 {if(l==r){d[o].sum=d[o].max=d[o].min=y;return ;}int mid=(l+r)/2;if(x<=mid){Update(o*2,l,mid,x,y);}else{Update(o*2+1,mid+1,r,x,y);}PushUp(o);}int MaxMin(int o,int l,int r,int x,int y){if(l==x&&r==y){Max=max(Max,d[o].max);}else{int mid=(l+r)/2; if(mid>=y){ MaxMin(o*2,l,mid,x,y); } else if(mid<x){ MaxMin(o*2+1,mid+1,r,x,y); }else{ MaxMin(o*2,l,mid,x,mid); MaxMin(o*2+1,mid+1,r,mid+1,y); }}return Max;}int main(){int n,m;while(~scanf("%d %d",&n,&m)){Build(1,1,n);char s[10];int x,y;for(int i=0;i<m;i++){scanf("%s %d %d",s,&x,&y); Max=0; if(!strcmp(s,"Q")){ printf("%d\n",MaxMin(1,1,n,x,y)); } if(!strcmp(s,"U")){ Update(1,1,n,x,y); }}}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
- AMD发布专用挖矿驱动
- java源码阅读之LinkedBlockingQueue
- JAVA学习笔记_request请求转发_response重定向
- shell备份上传脚本
- 不借助第三个变量,进行两个整数的交换
- HDU-1754-I Hate It
- hdu-6140Hybrid Crystals
- 3-10提供web服务
- 2017年8月15日提高组T1 字符串
- Java版表达式计算器
- Codeforces Round #386 (Div. 2) B. Decoding
- 2-html-协议相关
- Typical Policy Representation in Policy Search Methods
- 认识EXTJS