I Hate It

Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 99779    Accepted Submission(s): 37561

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

解析:不懂树状数组求区间最值的,可以看树状数组的应用

另外一种解法:hdu1754-线段树

#include<bits/stdc++.h>
using namespace std;#define e exp(1)
#define pi acos(-1)
#define mod 1000000007
#define inf 0x3f3f3f3f
#define ll long long
#define ull unsigned long long
#define mem(a,b) memset(a,b,sizeof(a))
int gcd(int a,int b){return b?gcd(b,a%b):a;}const int maxn=2e5+10;int n,m,a[maxn],c[maxn];int lowbit(int x)
{return x&(-x);
}
void update(int i,int value)
{while(i<=n){c[i]=value;for(int x=1; x<lowbit(i); x<<=1){c[i]=max(c[i],c[i-x]);}i+=lowbit(i);}return ;
}
int query(int l,int r)
{int ans=0;while(l<=r){ans=max(ans,a[r]);r--;for(; r-l>=lowbit(r); r-=lowbit(r)){ans=max(ans,c[r]);}}return ans;
}
int main()
{while(~scanf("%d%d",&n,&m)){for(int i=1; i<=n; i++)c[i]=0;for(int i=1; i<=n; i++){scanf("%d",&a[i]);update(i,a[i]);}while(m--){char s[5];int x,y;scanf("%s %d%d",s,&x,&y);if(s[0]=='Q'){printf("%d\n",query(x,y));}else{a[x]=y;update(x,y);}}}return 0;
}

hdu1754(树状数组求最值问题)相关推荐

  1. 树套树 ----- P1975 [国家集训队]排队(树状数组套权值线段树求动态逆序对)

    解题思路: 首先我们知道交换两个数a[l]和a[r]a[l]和a[r]a[l]和a[r]影响到的区间是[l+1,r−1][l+1,r-1][l+1,r−1] 对于a[l]a[l]a[l],我们要减去[ ...

  2. 离散化+树状数组求逆序数

    题目:http://poj.org/problem?id=2299 离散化是一种常用的技巧,有时数据范围太大,可以用来放缩到我们能处理的范围 因为其中需排序的数的范围0--- 999999999:显然 ...

  3. loj #535. 「LibreOJ Round #6」花火 树状数组求逆序对+主席树二维数点+整体二分...

    $ \color{#0066ff}{ 题目描述 }$ 「Hanabi, hanabi--」 一听说祭典上没有烟火,Karen 一脸沮丧. 「有的哦-- 虽然比不上大型烟花就是了.」 还好 Shinob ...

  4. 牛客练习赛33 D tokitsukaze and Inverse Number (树状数组求逆序对,结论)

    链接:https://ac.nowcoder.com/acm/contest/308/D 来源:牛客网 tokitsukaze and Inverse Number 时间限制:C/C++ 1秒,其他语 ...

  5. nyoj 1261 音痴又音痴的LT(离散化+树状数组求K小数)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=1261 解题思路:比较水的题,用离散化+树状数组求K小数即可,先用一次离线处理. #inc ...

  6. poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)

    题目链接:http://poj.org/problem?id=2299 Description In this problem, you have to analyze a particular so ...

  7. 动态区间第k小:树状数组套权值线段树

    所谓树状数组套权值线段树,就是在树状树组上套权值线段树 (逃) 解析 如何解决静态区间第k小? 使用主席树就ok啦 辣么如何解决动态区间第k小嘞- 我们想想主席树为啥不能解决动态区间第k小 因为如果改 ...

  8. 【BZOJ】1012: [JSOI2008]最大数maxnumber 树状数组求区间最值

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1012 题意:维护一个数列,开始时没有数值,之后会有两种操作, Q L :查询数列末 ...

  9. 树套树 ---- 树状数组套权值线段树模板题 P2617 Dynamic Rankings 动态第K大

    题目链接 题目大意: 给你一个数组aaa,aaa有两个操作 询问aaa中[l,r][l,r][l,r]区间里面第kkk小的数是哪个? 修改axa_xax​为yyy 解题思路: 首先我们知道权值线段树是 ...

最新文章

  1. JavaWeb项目实现文件下载
  2. 原野小年总共拍了多少_开一家羽毛球馆大概需要投资多少钱
  3. 根据工作年限预测工资python代码实现
  4. Babel概述及使用
  5. radio被选中,但是重复点击后事件不触发
  6. leetcode第 46 场双周赛
  7. Java架构-JavaSE(一)之类与对象
  8. Python批量检测服务器端口可用性与Socket函数使用
  9. Java并发编程实战_不愧是领军人物!这种等级的“Java并发编程宝典”谁能撰写?...
  10. 件测试专家分享III GUI自动化测试相关
  11. iOS 之 Property List
  12. jquery 时间相减获取天数_JQuery Datepicker实现JavaScript日期相减的小例子
  13. Consistent hashing
  14. java swing获得焦点_Java Swing TextArea 滚动条并获取焦点
  15. html5酷狗音乐网页代码,酷狗音乐
  16. 树莓派:树莓派的各个引脚
  17. python常用模块之os
  18. Exif信息 处理图片上传时翻转问题
  19. linux下火狐浏览器如何安装flash插件
  20. 架构师接龙:黄冬邓毅

热门文章

  1. 《第一行代码》学习笔记9-活动Activity(7)
  2. 15---Net基础加强
  3. 003.XE3包含了TPerlRegEx的单元
  4. 在 Windows 7 中安装上网认证客户端
  5. spring mvc中两种异常的处理手法
  6. tf.train.ExponentialMovingAverage
  7. $$和$BASHPID区别
  8. Go 语言web 框架 Gin 练习6
  9. linux远程用户登陆监控
  10. apt-get 与 yum的区别 (转)