I Hate It

                                                                            Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

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。
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

线段树入门题目。
最近做多校联合的比赛,发现每一场比赛都有涉及到线段树的题目,但是我之前没有学过线段树,于是决定学一下。
#include<cstdio>
#include<algorithm>
using namespace std;#define lson l, mid, root<<1
#define rson mid+1, r, root<<1|1const int N = 2000000 + 50;
struct node
{int l, r, mmax;
}a[4*N];void build_tree(int l, int r, int root)
{a[root].l = l;a[root].r = r;if(l == r){scanf("%d",&a[root].mmax);return ;}int mid = (l + r) >> 1;build_tree(lson);build_tree(rson);a[root].mmax = max(a[root<<1].mmax, a[root<<1|1].mmax);
}void update(int l, int r, int root, int k)
{if(l == a[root].l && r == a[root].r){a[root].mmax = k;return;}int mid = (a[root].l + a[root].r) >> 1;if(r <= mid)update(l, r, root<<1, k);else if(l > mid)update(l, r, root<<1|1, k);else{update(lson, k);update(rson, k);}a[root].mmax = max(a[root<<1].mmax, a[root<<1|1].mmax); //更新完单个点之后更新整棵树
}int Query(int l, int r, int root)
{if(l == a[root].l && r == a[root].r)return a[root].mmax;int mid = (a[root].l + a[root].r) >> 1;if(r <= mid)return Query(l, r, root<<1);else if(l > mid)return Query(l, r, root<<1|1);elsereturn max(Query(lson), Query(rson));
}int main()
{int n, m, a, b;char ch[5];while(~scanf("%d%d",&n,&m)){build_tree(1, n, 1);while(m--){getchar();scanf("%s%d%d",ch, &a, &b);if(ch[0] == 'Q')printf("%d\n",Query(a, b, 1));elseupdate(a, a, 1, b);}}return 0;
}

hdu 1754 I Hate It(线段树之 单点更新+区间最值)相关推荐

  1. hdu 1166 敌兵布阵(线段树之 单点更新+区间求和)

    敌兵布阵                                                                             Time Limit: 2000/10 ...

  2. HDU 1754 I hate it【线段树之单点替换区间最值】

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

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

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

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

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

  5. 线段树之单点更新,区域求和

    线段树之单点更新,区域求和 今天在coreforces上做的一题 E. DZY Loves Fibonacci Numbers time limit per test 4 seconds memory ...

  6. Codeforces Beta Round #75 (Div. 1 Only) B. Queue 线段树。单点更新

    http://codeforces.com/problemset/problem/91/B 题意: 给你n个数,求得i 到n中小于a[i]的最右边的a[j],然后求a[i]到a[j]之间包含了多少个数 ...

  7. [ACM] hdu 1754 I Hate It (线段树,单点更新)

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

  8. HDU 1754 I Hate It 线段树

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

  9. HDU 1394 Minimum Inversion Number(线段树的单点更新)

    点我看题目 题意 :给你一个数列,a1,a2,a3,a4.......an,然后可以求出逆序数,再把a1放到an后,可以得到一个新的逆序数,再把a2放到a1后边,,,,,,,依次下去,输出最小的那个逆 ...

最新文章

  1. Apache htaccess 重写假设文件存在!
  2. Lua中的基本函数库
  3. Linux系统初学者指南,观点|Linux 系统调用的初学者指南
  4. sqlite插入时间字段_sqlite 获取最后插入id
  5. 【腾讯游戏面试题】面向对象的设计原则是什么?
  6. python 获取天气_Python实现从百度API获取天气的方法
  7. Bootstrap 3之美03-独立行,文字环绕,图片自适应,隐藏元素
  8. 最大熵模型与EM算法及python实现
  9. 物联网的体系结构分为_初学物联网信息安全、3
  10. 二叉树遍历算法的应用
  11. mybatis日志在线生成sql(日志参数填充,sql日志格式化)
  12. WebRTC APM
  13. C++跟C#获取电脑上连接的多个摄像头名称与编号
  14. MySQL基础 创建学生表实现查询基础功能
  15. windows 下的CACTI的安装方法
  16. 组织人事类主数据业务梳理以及流程编排
  17. 地中海?修电脑的?格子衫?那些对程序员的高级黑!!!
  18. 手机与存储卡空间大小剩余怎么获取
  19. java runnable main_【BUG】”main” prio=5 tid=1 RUNNABLE
  20. JDK8下载及安装教程之windows版、linux版

热门文章

  1. Meterpreter Guide
  2. Hadoop/Spark生态圈里的新气象
  3. 5G有多恐怖?几秒钟可下载整部电影
  4. placeholder的兼容处理(jQuery下)
  5. 如何给网站瘦身?图文并茂的前端性能优化指南
  6. iPhone或让国内运营商划地为牢
  7. how to add one row in the dataframe?
  8. How research looks?
  9. 怎么发一篇IEEE文章呢?
  10. 订体育馆订健身房的方法