[kuangbin带你飞]专题七 线段树 B
来源:互联网 发布:linux 存放.rpm的目录 编辑:程序博客网 时间:2024/05/20 23:56
https://vjudge.net/contest/66989#problem/B
线段树基础题 (单点修改,区间最大值)
#include<stdio.h>#include<algorithm>#include<string.h>#include<iostream>#define lid (id << 1)#define rid (id << 1 | 1)using namespace std;const int MAXN=200010;int a[MAXN];struct Node{ int l,r; int sum,Max; void updata(int x) { // sum+=x; //增加 sum=x; //修改 Max=sum; }}tr[MAXN*4];void push_up(int id){ tr[id].sum = tr[lid].sum + tr[rid].sum; tr[id].Max = max(tr[lid].Max,tr[rid].Max);}void build(int id,int l,int r){ tr[id].l=l;tr[id].r=r; if(l==r) tr[id].sum=tr[id].Max=a[l]; else { int mid=(l+r)>>1; build(lid,l,mid); build(rid|1,mid+1,r); push_up(id); }}void updata(int id,int x,int v){ if(tr[id].l==x&&tr[id].r==x) tr[id].updata(v); else{ int mid=(tr[id].l+tr[id].r)>>1; if(x<=mid) updata(lid,x,v); else updata(rid,x,v); push_up(id); }}/*int query_sum(int id,int l,int r){ if(l==tr[id].l&&r==tr[id].r) return tr[id].sum; int mid=(tr[id].l+tr[id].r)>>1; if(r<=mid) return query_sum(lid,l,r); else if(l>mid) return query_sum(rid,l,r); else return query_sum(lid,l,mid)+query_sum(rid,mid+1,r);} */int query_max(int id,int l,int r){ if(l==tr[id].l&&r==tr[id].r) return tr[id].Max; int mid=(tr[id].l+tr[id].r)>>1; if(r<=mid) return query_max(lid,l,r); else if(l>mid) return query_max(rid,l,r); else return max(query_max(lid,l,mid),query_max(rid,mid+1,r));}int main(){ int N,M; char ch; while(scanf("%d%d",&N,&M)!=EOF) { for(int i=1;i<=N;i++) scanf("%d",&a[i]); build(1,1,N); for(int i=1;i<=M;i++) { scanf(" %c",&ch); if(ch=='Q') { int x,y; scanf("%d%d",&x,&y); printf("%d\n",query_max(1,x,y)); } else if (ch=='U') { int id,data; scanf("%d%d",&id,&data); updata(1,id,data); } } }}
阅读全文
0 0
- [kuangbin带你飞]专题七 线段树 B
- [kuangbin带你飞]专题七 线段树 B HDU 1754
- [kuangbin带你飞]专题七 线段树 【A、B、C、E、G、H】
- [kuangbin带你飞]专题七 线段树
- [kuangbin带你飞]专题七 线段树 H HDU4027
- [kuangbin带你飞]专题七 线段树 A
- [kuangbin带你飞]专题七 线段树 C
- [kuangbin带你飞]专题七 线段树 E
- [kuangbin带你飞]专题七 线段树 F
- [kuangbin带你飞]专题七 线段树 ABCDE 题解,持续更新
- [kuangbin带你飞]专题七 线段树 A HDU 1166
- [kuangbin带你飞]专题七 线段树 C POJ 3468
- [kuangbin带你飞]专题七 线段树 D POJ 2528
- [kuangbin带你飞]专题七 线段树 E HDU 1698
- [kuangbin带你飞]专题七 线段树 G POJ 3264
- [kuangbin带你飞]专题七 线段树 I HDU 1540
- [kuangbin带你飞]专题七 线段树 J HDU 3974
- [kuangbin带你飞]专题七 线段树 题解(未完)
- 根据查询参数list动态拼接SQL
- 《坚持与自由》——读明朝那些事儿有感
- ubuntu wifi hard blocked解决方法
- iOS开发中Member Center的一些理解
- 一头扎进知识的海洋,差点没淹死
- [kuangbin带你飞]专题七 线段树 B
- [LeetCode] 520.Detect Capital
- Date日期类的实现(C++)
- opencv学习笔记一
- 9.24linux系统文件
- [LeetCode] 541.Reverse String II
- Integer和int基本类型的比较
- [LeetCode] 566.Reshape the Matrix
- 基于FreeRTOS与MQTT的物联网技术应用系列——步进电机控制(五)MQTT的移植和步进电机控制的实现