hdu 1754 线段树(点修改)
I Hate It
Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 31979 Accepted Submission(s): 12649
这让很多学生很反感。
不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。
在每个测试的第一行,有两个正整数 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。
Huge input,the C function scanf() will work better than cin
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; const int maxn=;
int a[maxn]; inline int max(int a,int b){ return a>b?a:b;} struct IntervalTree
{
int left,right,max;
}f[]; void build(int left,int right,int i)
{
int mid;
f[i].left=left;f[i].right=right;
if(left==right)
{
f[i].max=a[left];return;
}
mid=(left+right)/;
build(left,mid,i*);
build(mid+,right,i*+);
f[i].max=max(f[i*].max,f[i*+].max);
return ;
} void update(int x,int d,int i)
{
int mid=(f[i].left+f[i].right)/;
if(f[i].left==f[i].right)
{
f[i].max=d;return;
}
if(x<=mid) update(x,d,i*);
else update(x,d,i*+);
f[i].max=max(f[i*].max,f[i*+].max);
return ;
} int query(int left,int right,int i)
{
int mid=(f[i].left+f[i].right)/;
if(f[i].left==left && f[i].right==right)
{
return f[i].max;
}
if(right<=mid) return query(left,right,i*);
else if(left>mid) return query(left,right,i*+);
else return max(query(left,mid,i*),query(mid+,right,i*+));
}
int main()
{
int n,m,i,ai,bi;
char ch;
while(~scanf("%d %d",&n,&m))
{
for(i=;i<=n;i++) scanf("%d",a+i);
build(,n,);
for(i=;i<=m;i++)
{
getchar();
scanf("%c %d %d",&ch,&ai,&bi);
if(ch=='U') update(ai,bi,);
else printf("%d\n",query(ai,bi,));
}
}
return ;
}
hdu 1754 线段树(点修改)的更多相关文章
- HDU - 1754 线段树-单点修改+询问区间最大值
这个也是线段树的经验问题,待修改的,动态询问区间的最大值,只需要每次更新的时候,去把利用子节点的信息进行修改即可以. 注意更新的时候区间的选择,需要对区间进行二分. #include<iostr ...
- I Hate It HDU - 1754 线段树 单点修改+区间最值
#include<iostream> #include<cstring> using namespace std; ; int m,n,p; struct node{ int ...
- hdu 1754 线段树(Max+单点修改)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU(1754),线段树,单点替换,区间最值
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 线段树模板题,update功能是单点替换,query是访问区间最大值. #include < ...
- hdu 1754 线段树入门
线段树点修改 区间最大值查询 #include <cstdio> #include <cstdlib> #include <cmath> #include < ...
- Hdu 1698(线段树 区间修改 区间查询)
In the game of DotA, Pudge's meat hook is actually the most horrible thing for most of the heroes. T ...
- HDU 1754 线段树入门解题报告
---恢复内容开始--- 题意:给定区间,每个人的成绩, Q次询问,求每次询问区间中的最大值 思路:构造线段树 代码: #include<stdio.h> #include<algo ...
- HDU - 1698 线段树区间修改,区间查询
这就是很简单的基本的线段树的基本操作,区间修改,区间查询,对区间内部信息打上laze标记,然后维护即可. 我自己做的时候太傻逼了...把区间修改写错了,对给定区间进行修改的时候,mid取的是节点的左右 ...
- HDU 1754 线段树 单点跟新 HDU 1166 敌兵布阵 线段树 区间求和
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- E - Just a Hook HDU - 1698 线段树区间修改区间和模版题
题意 给出一段初始化全为1的区间 后面可以一段一段更改成 1 或 2 或3 问最后整段区间的和是多少 思路:标准线段树区间和模版题 #include<cstdio> #include& ...
随机推荐
- alibaba druid监控页面的使用配置
一.Maven中添加Durid连接池依赖 <!-- druid连接池 --> <dependency> <groupId>com.alibaba</group ...
- 01_10_SERVLET如何连接Mysql数据库
01_10_SERVLET如何连接Mysql数据库 1. 实现类 public void doGet(HttpServletRequest request, HttpServletResponse r ...
- FMDB中的数据处理
[self.db executeUpdate:@"create table test (a text, b text, c integer, d double, e double)" ...
- Android读书笔记一
通过本章的学习真实体会到“移植”的概念:为特定设备定制Android的过程,但是移植的过程中开发最多的就是支持各种硬件设备的Linux驱动程序,本章对Android和Linux做了总体介绍.接着介绍了 ...
- 2019.5.18-5.19 ACM-ICPC 全国邀请赛(西安)赛后总结
第一次出去比赛经验太少了!!!果然最大目的是长见识和受刺激Orz 以下流水账: 背了本两千两百页的牛津高阶英汉双解词典,背了吃的,背了衣服……以后这些东西统统不带,买本口袋词典即可.上述物品这次比赛全 ...
- MySQL左右连接查询中的NULL的数据筛选问题
这里使用左连接为例子,对于左连接是将左边表的数据显示,右边表中如果没有对应的数据则使用null填充. game表: game_type表: SELECT g.name,g.type_id,t.type ...
- 【Git版本控制】Git的merge合并分支命令
1.实例 git checkout master git merge dev merge合并分支只对当前分支master产生影响,被合并的分支dev不受影响. 假设你有两个分支,“stable” 和 ...
- Linux-缓存服务
Memcached 基本操作 解释 命令 安装 yum install memcached 启动 memcached -d -l -m -p 停止 kill pid 查看某个端口是否通:telnet ...
- Down the Pyramid
Do you like number pyramids? Given a number sequence that represents the base, you are usually suppo ...
- App架构经验总结
作者:李纪钢,网名 Keegan小钢,博客地址:http://keeganlee.me.目前在广州日报新媒体有限公司,负责移动产品的研发工作. 关于:本文整理自CSDN架构主题月子活动金牌架构师微课堂 ...