kuangbin专题七 HDU1754 I Hate It (单点修改维护最大值)
这让很多学生很反感。
不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。
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 <stdio.h>
- #include <math.h>
- #include <string.h>
- #include <stdlib.h>
- #include <string>
- #include <vector>
- #include <set>
- #include <map>
- #include <queue>
- #include <algorithm>
- #include <sstream>
- #include <stack>
- using namespace std;
- #define FO freopen("in.txt","r",stdin);
- #define rep(i,a,n) for (int i=a;i<n;i++)
- #define per(i,a,n) for (int i=n-1;i>=a;i--)
- #define pb push_back
- #define mp make_pair
- #define all(x) (x).begin(),(x).end()
- #define fi first
- #define se second
- #define SZ(x) ((int)(x).size())
- #define debug(x) cout << "&&" << x << "&&" << endl;
- #define lowbit(x) (x&-x)
- #define mem(a,b) memset(a, b, sizeof(a));
- typedef vector<int> VI;
- typedef long long ll;
- typedef pair<int,int> PII;
- const ll mod=;
- const int inf = 0x3f3f3f3f;
- ll powmod(ll a,ll b) {ll res=;a%=mod;for(;b;b>>=){if(b&)res=res*a%mod;a=a*a%mod;}return res;}
- ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
- //head
- const int N=;
- int n,m,a[N<<],maxx[N<<],pos,val,ans;
- void Pushup(int rt) {
- maxx[rt]=max(maxx[rt<<],maxx[rt<<|]);
- }
- void build(int rt,int L,int R) {
- if(L==R) {
- scanf("%d",&a[rt]);
- maxx[rt]=a[rt];//这里是rt的维护信息
- return;
- }
- int mid=(L+R)>>;
- build(rt<<,L,mid);
- build(rt<<|,mid+,R);
- Pushup(rt);
- }
- void Updata(int rt,int L,int R,int pos,int val) {
- if(L==R) {//修改
- a[rt]=val;
- maxx[rt]=a[rt];
- return;
- }
- int mid=(L+R)>>;
- if(pos<=mid) Updata(rt<<,L,mid,pos,val);
- else Updata(rt<<|,mid+,R,pos,val);
- Pushup(rt);
- }
- void Query(int rt,int L,int R,int l,int r) {//维护最大值
- if(L>=l&&R<=r) {
- ans=max(ans,maxx[rt]);
- return;
- }
- int mid=(L+R)>>;
- if(l<=mid) Query(rt<<,L,mid,l,r);
- if(r>mid) Query(rt<<|,mid+,R,l,r);
- }
- int main() {
- while(~scanf("%d%d",&n,&m)) {
- build(,,n);
- char s[];
- while(m--) {
- ans=-;
- scanf("%s%d%d",s,&pos,&val);
- if(s[]=='Q') {
- Query(,,n,pos,val);
- printf("%d\n",ans);
- } else Updata(,,n,pos,val);
- }
- }
- }
kuangbin专题七 HDU1754 I Hate It (单点修改维护最大值)的更多相关文章
- kuangbin专题七 HDU1540 Tunnel Warfare (前缀后缀线段树)
During the War of Resistance Against Japan, tunnel warfare was carried out extensively in the vast a ...
- kuangbin专题七 POJ3468 A Simple Problem with Integers (线段树或树状数组)
You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of op ...
- kuangbin专题七 HDU1166 敌兵布阵 (线段树或树状数组)
C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于 ...
- kuangbin专题七 HDU3974 Assign the task (dfs时间戳建树)
There is a company that has N employees(numbered from 1 to N),every employee in the company has a im ...
- kuangbin专题七 ZOJ1610 Count the Colors (灵活线段树)
Painting some colored segments on a line, some previously painted segments may be covered by some th ...
- kuangbin专题七 HDU4027 Can you answer these queries? (线段树)
A lot of battleships of evil are arranged in a line before the battle. Our commander decides to use ...
- kuangbin专题七 POJ3264 Balanced Lineup (线段树最大最小)
For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One d ...
- kuangbin专题七 HDU1698 Just a Hook (区间设值 线段树)
In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. T ...
- HDU 1166 【线段树 || 树状数组,单点修改 维护区间和】
题目链接 HDU 1166 大概题意: 第一行一个整数T,表示有T组数据.每组数据第一行一个正整数N(N<=50000),表示敌人有N个工兵营地,接下来有N个正整数,第i个正整数ai代表第i个工 ...
随机推荐
- composer update的错误使用以及如何更新composer.lock文件
用composer update装包是错误的. 安装包标准的方法应该是 require ,或者手动写 compose.json 文件,然后 composer install .如果只是需要更新 com ...
- springboot整合mybatis+generator
源码地址:springboot-integration 如果你觉得解决了你使用的需求,欢迎fork|star.
- css之content
content 属性与 :before 及 :after 伪元素配合使用,来插入生成内容.该属性用于定义元素之前或之后放置的生成内容.默认地,这往往是行内内容,不过该内容创建的框类型可以用属性 dis ...
- 关于android中,菜单按钮点击事件首次执行之后再次执行需要双击按钮的问题
有时候在获取事件的时候,需要双击才能获取,解决方法很简单,把返回值设为true,那么这个事件就不会再分发了,我预计是设为其他值会继续分发,造成事件的相应混乱
- css样式文件命名规范
样式文件命名规范 主要 master.css, style.css, main.css 布局 layout.css 专栏 columns.css 文字 font.css 打印 print.css 主题 ...
- Java界面设计
---------------siwuxie095 Java SE(Java Standard Edition) 即 Java 标准版, 一般也 ...
- php中用大括号把?>和<?php框起来的作用
<?php function my_function() { ?> My function was called <!--就是这里,为什么前面要用?>和< ?php 把M ...
- 为什么一些公司把dwg文件转化为pdf
是因为dwg文件中可能会涉及到字体问题 这台电脑打开dwg没问题,另一台电脑可能没有相应的字体用autocad打开就会出现乱码,所以先转化为pdf,而pdf有固定格式的作用,能够保证一台电脑打开是什么 ...
- 3.4PCL中异常处理机制
1.开发者如何增加一个新的异常类 2.如何使用自定义的异常 3.异常的处理
- SDUT 3361 数据结构实验之图论四:迷宫探索
数据结构实验之图论四:迷宫探索 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 有一个地下迷 ...