HDU1754[I HATE IT] 线段树
来源:互联网 发布:windows nt 4.0 sp6 编辑:程序博客网 时间:2024/06/08 10:59
题目:
很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。 这让很多学生很反感。 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。
Input
本题目包含多组测试,请处理到文件结束。
在每个测试的第一行,有两个正整数 N 和 M (0
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
题解:
线段树 单点修改 区间最值
#include <cstdio>#include <iostream>#include <algorithm>using namespace std;#define N 200010#define ls l, m, rt<<1#define rs m+1, r, rt<<1|1int maxn[N << 2];void update( int nd ){ maxn[nd] = max( maxn[ nd << 1 ], maxn[ nd << 1 | 1 ]);}void build( int l, int r, int rt){ if ( l == r ){ scanf( "%d", &maxn[rt]); return ; } int m = ( l + r ) >> 1; build(ls); build(rs); update(rt);}void cdate( int p, int x, int l, int r, int rt){ if ( l == r ){ maxn[rt] = x; return ; } int m = ( l + r ) >> 1; if ( p <= m ) cdate( p, x, ls); else cdate( p, x, rs); update(rt);}int query( int L, int R, int l, int r, int rt){ if ( L <= l && r <= R ){ return maxn[rt]; } int m = ( l + r ) >> 1; int ret = 0; if ( L <= m ) ret = max( ret, query( L, R, ls)); if ( R >m ) ret = max( ret, query( L, R, rs)); return ret; }int main(){ int n, m; while(~scanf("%d%d",&n,&m)){ build( 1, n, 1 ); while( m-- ){ char op[2]; int a , b; scanf( "%s%d%d", op, &a, &b); if(op[0]=='Q')printf("%d\n",query(a, b, 1, n, 1 ) ); else cdate( a, b, 1, n, 1 ); } } return 0;}
阅读全文
0 0
- HDU1754 I Hate It,线段树
- 线段树hdu1754 I Hate It
- 【线段树】 hdu1754 I Hate It
- hdu1754 I Hate It (线段树)
- hdu1754 I Hate It+线段树
- hdu1754 I Hate It (线段树)
- hdu1754 I Hate It (线段树)
- HDU1754 I Hate It(线段树)
- hdu1754 I Hate It(线段树)
- hdu1754 I Hate It,线段树
- hdu1754 I Hate It(线段树)
- hdu1754 I Hate It(线段树)
- 线段树(hdu1754 I hate it)
- hdu1754-I Hate It(线段树)
- hdu1754 I hate it (线段树)
- 【HDU1754】I HATE IT,线段树练习
- hdu1754 I Hate It 线段树RMQ
- HDU1754:I Hate It(线段树)
- [ERROR]java.lang.NoClassDefFoundError: Could not initialize class com.jacob.activeX.ActiveXComponent
- 面向对象技术
- 【Java面试】---装箱拆箱问题汇总
- python-II
- Android 通讯录(2)-----自定义View实现右侧导航栏
- HDU1754[I HATE IT] 线段树
- UDP通信类,监听本机指定端口,发送消息给指定电脑
- 练习赛zi树上距离(分治)
- 通过反射来创建对象,newInstance()和getConstructor()
- WebApi 断点上传
- linux中关闭正在运行的脚本
- IIPP Week 3
- 【容斥原理】
- JavaBeen类的几种写法及优缺点