线段树 区间查询最大值,单体修改 hdu 1754
#include<cstdio>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<queue>
#include<iostream>
using namespace std;
const int maxn=2e5+;
int ary[maxn];
struct node
{
int l,r,val;
}tree[maxn<<];
void push_up(int cur)
{
tree[cur].val=max(tree[cur*].val,tree[cur*+].val);
}
void build(int l,int r,int cur)
{
tree[cur].l=l,tree[cur].r=r;
tree[cur].val=;
if(l==r){
tree[cur].val=ary[l];
return;
}
int mid=(l+r)/;
build(l,mid,cur*);
build(mid+,r,cur*+);
push_up(cur);
}
int query(int l,int r,int cur)
{ if(l<=tree[cur].l&&r>=tree[cur].r)
return tree[cur].val;
int mid=(tree[cur].l+tree[cur].r)/;
int ans=;
if(l<=mid) ans=max(ans,query(l,r,cur*));
if(r>mid) ans=max(ans,query(l,r,cur*+));
return ans;
}
void Update(int base,int price,int cur)
{
if(tree[cur].l==tree[cur].r){
tree[cur].val=price;
return;
}
int mid=(tree[cur].l+tree[cur].r)/;
if(base<=mid) Update(base,price,cur*);
else Update(base,price,cur*+);
push_up(cur);
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
for(int i=;i<=n;i++) scanf("%d",&ary[i]);
build(,n,);
while(m--){
char tmp;
cin>>tmp;
if(tmp=='Q'){
int l,r;
scanf("%d%d",&l,&r);
int ans=query(l,r,);
printf("%d\n",ans);
}
else{
int l,r;
scanf("%d%d",&l,&r);
Update(l,r,);
}
}
}
return ;
}
线段树 区间查询最大值,单体修改 hdu 1754的更多相关文章
- ACM_3n+1问题(克拉兹问题+线段树区间查询最大值)
3n+1问题 Time Limit: 2000/1000ms (Java/Others) Problem Description: 考虑如下的序列生成算法:从整数n开始,如果n是偶数,把它除以2:如果 ...
- 最大数maxnumber (HYSBZ 1012)(线段树区间查询和单点修改)(优雅的暴力)
Problem 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L 个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2. 插入操作 ...
- Light OJ-1082 - Array Queries,线段树区间查询最大值,哈哈,水过~~
...
- 约会安排 HDU - 4553(线段树区间查询,区间修改,区间合并)
题目: 寒假来了,又到了小明和女神们约会的季节. 小明虽为屌丝级码农,但非常活跃,女神们常常在小明网上的大段发言后热情回复“呵呵”,所以,小明的最爱就是和女神们约会.与此同时,也有很多基友找他开黑, ...
- (线段树 区间查询)The Water Problem -- hdu -- 5443 (2015 ACM/ICPC Asia Regional Changchun Online)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=5443 The Water Problem Time Limit: 1500/1000 MS (Java/ ...
- HDU 1754 I Hate It(线段树区间查询,单点更新)
描述 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感.不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然,老 ...
- HDU.5692 Snacks ( DFS序 线段树维护最大值 )
HDU.5692 Snacks ( DFS序 线段树维护最大值 ) 题意分析 给出一颗树,节点标号为0-n,每个节点有一定权值,并且规定0号为根节点.有两种操作:操作一为询问,给出一个节点x,求从0号 ...
- POJ_3468 A Simple Problem with Integers 【线段树区间查询+修改】
一.题目 POJ3468 二.分析 裸的线段树区间查询+修改. 三.AC代码 #include <cstdio> #include <iostream> #include &l ...
- POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 53703 Accepted: 25237 ...
随机推荐
- 51nod(1089 最长回文子串 V2)(hash 加二分)
1089 最长回文子串 V2(Manacher算法) 回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串. 输入一个字符串Str,输出Str里最长回文子串的长度. 输入 ...
- AcWing 11. 背包问题求方案数
//g[i,j]表示f[i,j]取最大值的方案数目 //体积最多是j 全部为0,v>=0 //体积恰好为j f[0][0]=0,f[i]=无穷,v>=0 //体积至少是j f[0][0]= ...
- Cannot resolve collation conflict between "Chinese_Taiwan_Stroke_CI_AS" and "Chinese_PRC_CI_AS" in UNION ALL operator occurring in SELECT statement column 1.
Cannot resolve collation conflict between . 解决方案: COLLATE Chinese_PRC_CI_AS 例子: SELECT A.Name FROM A ...
- Struts2学习-struts执行过程简述
1.web.xml <web-app> <filter> <filter-name>struts2</filter-name> <filter-c ...
- 1080 Graduate Admission
大致题意就是有N个学生,有M个学校,每个学校的名额都是正整数.每个学生可以填K个学校志愿,N个学生一起排名以后,排名高的学生先挑学校,不保护一志愿. 题目要求: 首先,把所有学生按总成绩SUM(GE+ ...
- Django 初试水(三)
在前面的一和二中,分别实现了一些基础的操作,数据库和 Django 自带的管理界面,接下来,主要是创建我们自己的界面(视图). 访问一个地址,对应的服务器直接返回一个视图.这是最常见的交互. 就好比访 ...
- window.resizeTo
概述 动态调整窗口的大小. 语法 window.resizeTo(aWidth, aHeight) 参数 aWidth 是一个整数,表示新的 outerWidth(单位:像素)(包括滚动条.窗口边框等 ...
- Java基本语法--运算符
运算符是一种特殊的符号,用以表示数据的运算.赋值和比较等.本篇博客详细介绍Java基本语法中的运算符,主要包括算术运算符.赋值运算符.比较运算符(关系运算符).逻辑运算符.位运算符.三元运算符. Ja ...
- 一些docker资料汇总
安装vmtools https://blog.csdn.net/qq_37764098/article/details/95538813 挂载vm共享文件夹 https://www.cnblogs.c ...
- AcWing 12. 背包问题求具体方案
//f[i][j]=max(f[i-1][j],f[i-1][j-v[i]]+w[i]) #include <iostream> using namespace std; ; int n, ...