描述

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

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
Hint
Huge input,the C function scanf() will work better than cin
题意
如上
题解
线段树区间查询,单点更新
代码
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<algorithm>
  4.  
  5. using namespace std;
  6.  
  7. const int N=2e5+;
  8. int a[N<<];
  9. void PushUp(int rt)
  10. {
  11. a[rt]=max(a[rt<<],a[rt<<|]);
  12. }
  13. void Build(int l,int r,int rt)
  14. {
  15. if(l==r)
  16. {
  17. scanf("%d",&a[rt]);
  18. return;
  19. }
  20. int mid=(l+r)>>;
  21. Build(l,mid,rt<<);
  22. Build(mid+,r,rt<<|);
  23. PushUp(rt);
  24. }
  25. void Update(int L,int C,int l,int r,int rt)
  26. {
  27. if(l==r)
  28. {
  29. a[rt]=C;
  30. return;
  31. }
  32. int mid=(l+r)>>;
  33. if(L<=mid)Update(L,C,l,mid,rt<<);
  34. else Update(L,C,mid+,r,rt<<|);
  35. PushUp(rt);
  36. }
  37. int Query(int L,int R,int l,int r,int rt)
  38. {
  39. if(L<=l&&r<=R)
  40. return a[rt];
  41. int mid=(l+r)>>;
  42. int ans=;
  43. if(L<=mid)ans=max(ans,Query(L,R,l,mid,rt<<));
  44. if(R>mid)ans=max(ans,Query(L,R,mid+,r,rt<<|));
  45. return ans;
  46. }
  47. int main()
  48. {
  49. int n,m,x,y,t,o=;
  50. char op[];
  51. while(scanf("%d%d",&n,&m)!=EOF)
  52. {
  53. Build(,n,);
  54. for(int i=;i<=m;i++)
  55. {
  56. scanf("%s%d%d",op,&x,&y);
  57. if(op[]=='Q')///x--y
  58. printf("%d\n",Query(x,y,,n,));
  59. if(op[]=='U')///+
  60. Update(x,y,,n,);
  61. }
  62. }
  63. return ;
  64. }

HDU 1754 I Hate It(线段树区间查询,单点更新)的更多相关文章

  1. HDU 1754 I Hate It(线段树之单点更新,区间最值)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. hdu 1754 I Hate It (线段树、单点更新)(PS:ios::sync_with_stdio(false)可以加快cin、cout的读取写出速度)

    I Hate ItTime Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  3. hdu 1166 敌兵布阵 (线段树、单点更新)

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

  4. HDU 1540 Tunnel Warfare 平衡树 / 线段树:单点更新,区间合并

    Tunnel Warfare                                  Time Limit: 4000/2000 MS (Java/Others)    Memory Lim ...

  5. hdu 敌兵布阵(线段树之单点更新)

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

  6. hdu 1754 I Hate It 线段树 点改动

    // hdu 1754 I Hate It 线段树 点改动 // // 不多说,裸的点改动 // // 继续练 #include <algorithm> #include <bits ...

  7. hdu1754线段树的单点更新区间查询

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. HDUOJ---1754 I Hate It (线段树之单点更新查区间最大值)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  9. HDU 1754 I Hate It 线段树RMQ

    I Hate It Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=175 ...

随机推荐

  1. JAVA版开源微信管家—JeeWx捷微3.2版本发布,支持微信公众号,微信企业号,支付窗、小程序

    JeeWx捷微3.2微信企业号升级版本发布^_^ JeeWx捷微V3.2——多触点管理平台(支持微信公众号,微信企业号,支付窗.小程序)   JeeWx捷微V3.2.0版本引入了更多新特性,支持微信公 ...

  2. Crontab 删除N天前日志

    linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...

  3. zatree的安装

    zatree的安装有2种 一种是支持2.x的用以下方法安装 zabbix安装zatree 实现图形树状化 官网:https://github.com/spide4k/zatree [root@SERV ...

  4. PHP 操作Mongodb 实例

    缩略版本<?php //1.连接MongoDB $mongo = new Mongo(); $mongo = new Mongo("mongodb://username:passwor ...

  5. idea中pom文件需要添加的依赖

    <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉. --> <!-- IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块 ...

  6. C++ 学习 之Struct

    转自https://blog.csdn.net/bestconvenient/article/details/30734139 最开始,就让我们来讨论一下一个最最基本,也最最容易被人忽视掉的问题——C ...

  7. CentOS添加环境变量

    添加这个两个路径:/usr/local/webserver/python/bin:/usr/local/webserver/mysql/bin 方法一:直接运行命令export PATH=$PATH: ...

  8. mysql 拼接字符

    Mysql的查询结果行字段拼接,可以用下面两个函数实现: 1. concat函数 mysql> select concat('1','2','3') from test ; +--------- ...

  9. JAVA语言 第六周

    时间太快了,过几天就要去学校了.在家里学习不下去,一点不心静.学习也不如刚放假的时候了. 活在被开学支配的恐惧下,每天看一会儿视频(书是真的难看下去). 效果不明显,这个暑假已经被拉开差距 了.提前几 ...

  10. CXF使用JMS作为传输协议的配置

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...