HDU1754
https://vjudge.net/contest/66989#problem/B
这让很多学生很反感。
不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。
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<iostream>
- #include<stdio.h>
- #include<string.h>
- #define lson l,m,rt<<1
- #define rson m+1,r,rt<<1|1
- using namespace std;
- const int maxn=;
- int sum[maxn<<];
- void pushup(int rt)
- {
- sum[rt]=max(sum[rt<<],sum[rt<<|]);
- }
- /*
- void pushdown(int rt,int ln,int rn)
- {
- if(add[rt])
- {
- sum[rt<<1]+=add[rt]*ln;
- sum[rt<<1|1]+=add[rt]*rn;
- add[rt<<1]+=add[rt];
- add[rt<<1|1]+=add[rt];
- add[rt]=0;
- }
- }
- */
- void build(int l,int r,int rt)
- {
- if(r==l)
- {
- scanf("%d",&sum[rt]);
- return;
- }
- int m=(l+r)>>;
- build(lson);
- build(rson);
- pushup(rt);
- }
- void update(int L,int c,int l,int r,int rt)
- {
- if(l==r)
- {
- sum[rt]=c;
- return;
- }
- int m=(l+r)>>;
- if(L<=m)
- update(L,c,lson);
- else
- update(L,c,rson);
- pushup(rt);
- }
- int query(int L,int R,int l,int r,int rt)
- {
- if(L<=l&&R>=r)
- {
- return sum[rt];
- }
- int ans=;
- int m=(r+l)>>;
- if(L<=m)
- ans=max(ans,query(L,R,lson));
- if(R>m)
- ans=max(ans,query(L,R,rson));
- return ans;
- }
- int main()
- {
- ios::sync_with_stdio(false);
- cin.tie();
- int n,m,x,y;
- char b;
- while(~scanf("%d%d",&n,&m))
- {
- build(,n,);
- for(int i=;i<=m;i++)
- {
- getchar();
- scanf("%c%d%d",&b,&x,&y);
- if(b=='Q')
- printf("%d\n",query(x,y,,n,));
- else
- update(x,y,,n,);
- }
- }
- return ;
- }
HDU1754的更多相关文章
- hdu1754 I Hate It
题目链接:hdu1754 I Hate It 树状数组学习参考博客:http://blog.csdn.net/u010598215/article/details/48206959 树状数组之前没看懂 ...
- I Hate It(hdu1754)(线段树区间最大值)
I Hate It hdu1754 Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- [线段树]HDU-1754板子题入门ver
HDU-1754 线段树数组请开到四倍 众所周知数组开小会导致re tle wa等一系列问题orz 板子就是板子,数组从零开始或是从一开始都没什么问题,就是2*root+1还是2*root+2的问题. ...
- HDU1754 —— I Hate It 线段树 单点修改及区间最大值
题目链接:https://vjudge.net/problem/HDU-1754 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜 ...
- HDU1754 && HDU1166 线段树模板题
HDU1754 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 题目分析:对于给出的一个很长的区间,对其进行单点更新值和区间求最大值的操作,由于 ...
- HDU1166(线段树 +更新单点,求区间总和)、HDU1754(线段树 + 更新单点,求区间最大值)
线段树简单应用 先附上几张图便与理解,大佬文章传送门1.传送门2 HDU1166:题目描述 线段树 +更新单点,求区间总和 代码如下(递归版) #include<iostream> #in ...
- hdu1754 I hate it线段树模板 区间最值查询
题目链接:这道题是线段树,树状数组最基础的问题 两种分类方式:按照更新对象和查询对象 单点更新,区间查询; 区间更新,单点查询; 按照整体维护的对象: 维护前缀和; 维护区间最值. 线段树模板代码 # ...
- hdu1754 线段树
Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写 ...
- hdu1754线段树维护区间最大值
#include <iostream> #include <cstdio> using namespace std; #define MAXN 200005 int N,M; ...
- 线段树---HDU1754 I hate it
这个题也是线段树的基础题,有了上一个题的基础,在做这个题就显得比较轻松了,大体都是一样的,那个是求和,这个改成求最大值,基本上思路差不多,下面是代码的实现 #include <cstdio> ...
随机推荐
- Mybatis架构简介
一.Mybatis与ORM 对象关系映射(即Object Relational Mapping,简称ORM),主要用于关系型数据库和实体之间的映射,主要为了解决对象与关系数据库存在的互不匹配的现象,O ...
- 【代码笔记】iOS-HTTPQueue下载图片
一,工程图. 二,代码. ViewController.h #import <UIKit/UIKit.h> #import "ASIHTTPRequest.h" #im ...
- 【代码笔记】iOS-NSFileManager
一,代码. #import "ViewController.h" @interface ViewController () @end @implementation ViewCon ...
- ViewPager实现Recycle机制和响应notifyDataSetChanged
1.目标 主界面要求水平移动翻页效果,每次只能翻一页,可以翻无数页. 2.实现思路 针对"每次只能翻一页"这个要求,简单使用SDK的话只有用ViewPager.ViewPager的 ...
- JSP内置对象——session对象
举个购物流程的例子: 这整个购物过程,它是属于一次回话.那么这个session是保存在服务器内存当中,并且它保存着不同用户对应的session,一个用户对应一个session.看下面这幅图: 从图中可 ...
- vue-router 手势滑动触发返回
vue-router的路由变换只存在“变换前”和“变换后”,不存在“切换中”的状态,所以做不到大多数app(微信那样的)在滑动过程中让界面跟随手指移动.但滑动事件还是可以监听的,我们可以在滑动之后再触 ...
- .NET(C#)如何遍历Dictionary
我们知道.NET中的Dictionary是键/值对的集合,使用起来也是比较方便,Dictionary也可以用KeyValuePair来迭代遍历,具体如下: using System; using Sy ...
- 2. DAS,NAS,SAN在数据库存储上的应用
一. 硬盘接口类型1. 并行接口还是串行接口(1) 并行接口,指的是并行传输的接口,比如有0~9十个数字,用10条传输线,那么每根线只需要传输一位数字,即可完成.从理论上看,并行传输效率很高,但是由于 ...
- shell變量和數組
我們要知道shell是一個很重要的腳本能幫助我們完成很多事情 shell語言其實和很多的語言的語法是差不多的 變量: 變量的定義很簡單的,但是等號兩邊是不可以有空格的(不能有空格) 命名只能使用英文字 ...
- 【转】HTTP学习---图解HTTP[三次握手&&ISO模型]
[转]https://www.toutiao.com/i6592556686068679182/ 首先了解一次完整的HTTP请求到响应的过程需要的步骤: 1. 域名解析 2. 发起TCP的3次握手 3 ...