HDU 1754 I Hate It(线段树模板题)
题目链接: 传送门
I Hate It
Time Limit: 3000MS Memory Limit: 32768 K
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
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define lson l,m,rt << 1
#define rson m+1,r,rt << 1 | 1
const int maxn = 200005;
int maxv[maxn << 2];
void PushUp(int rt)
{
maxv[rt] = max(maxv[rt << 1],maxv[rt << 1 | 1]);
}
void build(int l,int r,int rt)
{
if (l == r)
{
scanf("%d",&maxv[rt]);
return ;
}
int m = (l + r) >> 1;
build(lson);
build(rson);
PushUp(rt);
}
void upd (int p,int val,int l,int r,int rt)
{
if (l == r)
{
maxv[rt] = val;
return ;
}
int m = (l + r) >> 1;
if (p <= m) upd(p,val,lson);
else upd(p,val,rson);
PushUp(rt);
}
int qry(int L,int R,int l,int r,int rt)
{
if (L <= l && r <= R)
{
return maxv[rt];
}
int m = (l + r) >> 1;
int ret = 0;
if (L <= m) ret = max(ret,qry(L,R,lson));
if (R > m) ret = max(ret,qry(L,R,rson));
return ret;
}
int main()
{
int N,M;
while (~scanf("%d%d",&N,&M))
{
char opt;
int x,y;
memset(maxv,0,sizeof(maxv));
build (1,N,1);
while (M--)
{
getchar();
scanf("%c %d %d",&opt,&x,&y);
if (opt == 'Q')
{
printf("%d\n",qry(x,y,1,N,1));
}
if (opt == 'U')
{
upd(x,y,1,N,1);
}
}
}
return 0;
}
HDU 1754 I Hate It(线段树模板题)的更多相关文章
- hdu 1754 I Hate It 线段树基础题
Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求, ...
- hdu 1754 I Hate It(线段树水题)
>>点击进入原题测试<< 思路:线段树水题,可以手敲 #include<string> #include<iostream> #include<a ...
- hdu 1754 I Hate It 线段树 点改动
// hdu 1754 I Hate It 线段树 点改动 // // 不多说,裸的点改动 // // 继续练 #include <algorithm> #include <bits ...
- HDU 1698 Just a Hook (线段树模板题-区间求和)
Just a Hook In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of t ...
- [AHOI 2009] 维护序列(线段树模板题)
1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec Memory Limit: 64 MB Description 老师交给小可可一个维护数列的任务,现在小 ...
- hdu1823(二维线段树模板题)
hdu1823 题意 单点更新,求二维区间最值. 分析 二维线段树模板题. 二维线段树实际上就是树套树,即每个结点都要再建一颗线段树,维护对应的信息. 一般一维线段树是切割某一可变区间直到满足所要查询 ...
- [POJ2104] 区间第k大数 [区间第k大数,可持久化线段树模板题]
可持久化线段树模板题. #include <iostream> #include <algorithm> #include <cstdio> #include &l ...
- HDU 1754 I Hate It 线段树单点更新求最大值
题目链接 线段树入门题,线段树单点更新求最大值问题. #include <iostream> #include <cstdio> #include <cmath> ...
- UESTC - 1057 秋实大哥与花 线段树模板题
http://acm.uestc.edu.cn/#/problem/show/1057 题意:给你n个数,q次操作,每次在l,r上加上x并输出此区间的sum 题解:线段树模板, #define _CR ...
随机推荐
- FineUI v4.0.2 (beta) 发布了!
FineUI v4.0.2 (beta) 已经于 2013-12-15 发布! ================================== 关于FineUI基于 ExtJS 的开源 ASP. ...
- MySQL for mac使用记录
一.登录 打开终端,输入/usr/local/mysql/bin/mysql -u root -p 初次进入mysql,密码为空.当出现mysql>提示符时,表示你已经进入mysql中.键入ex ...
- .net程序员转行做手游开发经历(四)
今天是大年初二,在这里先给大家拜个年,祝大家在新的一年里能事事顺心. 年前的时候更新了一版,先发了内测,没有想到过年这几天,有的小伙伴们还在玩,还给我们提了很多建议和意见,让我们觉得非常温暖,给我们很 ...
- 20160803 - C:\WINDOWS\system32\config\systemprofile\Desktop 不可用的解决
问题:某些软件在从注册表读取用户桌面地址时,欠考虑的%USERPROFILE%的情况,例如迅雷打开文件时,会提示: [Window Title]位置不可用 [Content]C:\WINDOWS\sy ...
- CSS 问题集锦
[1]让DIV中的内容居中 1.文字垂直居中,关键代码:height:100px;line-height:100px(两个值要相等) <div style="margin:0 auto ...
- md5加密31位
今天将其它服务器里的用户数据导入到新的系统数据库中 出现密码不匹配情况 查看原来数据库中密码得到结果位: 原服务器密码 明文 正确32位密闻 67b14728ad9902aecba32e22fa4f6 ...
- linux基础-第十五单元 软件包的管理
使用RPM安装及移除软件 什么是RPM rpm的文件名 rpm软件安装与移除工作中经常使用的选项 查看RPM软件包中的信息 查询已安装的软件包信息 RPM包的属性依赖性问题 什么是RPM包的属性依赖性 ...
- 1025关于explain的补充1
https://segmentfault.com/q/1010000004195469 我的困惑 http://www.cnblogs.com/BeginMan/p/3754322.html 可以指定 ...
- 《锋利的jQuery》读书笔记
jQuery理念:write less, do more! 第 一 章一:jQuery简介 a:轻量级 b:强大选择器 c:DOM封装 d:ajax封装 e:不污染顶级变量 只建立一个jQuery对象 ...
- java之自定义回调接口
本质上为:传递不同的实现的接口实例,执行不同的程序,即有扩展性. 在一个方法中,可以实现一个对象中的接口,实例化该接口,即可完成对不同对象的不同回掉. 在原有类中,调用接口中的方法,根据不同的接口实例 ...