TYVJ 1427 线段树的基本操作
来源:互联网 发布:淘宝网买男鞋 编辑:程序博客网 时间:2024/06/12 02:54
题意:
单点修改,区间最值
思路:
线段树
原题请戳这里
//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>#define LSON l,mid,lson#define RSON mid+1,r,rson#define N 500000 #define inf 0x3fffffffusing namespace std;int n,m,jy,xx,yy,RANS,ANS;int tree[N*4],lmax[N*4],rmax[N*4],maxx[N*4],sum[N*4];void push_up(int pos,int lson,int rson){ sum[pos]=sum[lson]+sum[rson]; rmax[pos]=max(rmax[rson],sum[rson]+rmax[lson]); lmax[pos]=max(lmax[lson],lmax[rson]+sum[lson]); maxx[pos]=max(maxx[lson],max(maxx[rson],rmax[lson]+lmax[rson]));}void build(int l,int r,int pos){ if(l==r){ scanf("%d",&tree[pos]); lmax[pos]=rmax[pos]=sum[pos]=maxx[pos]=tree[pos]; return; } int mid=(l+r)/2,lson=pos<<1,rson=pos<<1|1; build(LSON);build(RSON); push_up(pos,lson,rson);}void query(int l,int r,int pos){ if(l>=xx&&r<=yy){ ANS=max(ANS,max(maxx[pos],RANS+lmax[pos])); RANS=max(rmax[pos],RANS+sum[pos]); return; } int mid=(l+r)/2,lson=pos<<1,rson=pos<<1|1; if(mid<xx)query(RSON); else if(mid>=yy)query(LSON); else query(LSON),query(RSON);}void update(int l,int r,int pos){ if(l==r){ lmax[pos]=rmax[pos]=sum[pos]=maxx[pos]=tree[pos]=yy; return; } int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1; if(mid<xx)update(RSON); else update(LSON); push_up(pos,lson,rson);}int main(){ scanf("%d%d",&n,&m); build(1,n,1); while(m--){ scanf("%d%d%d",&jy,&xx,&yy); if(jy==1){ if(xx>yy)swap(xx,yy); ANS=RANS=-inf; query(1,n,1); printf("%d\n",ANS); } else update(1,n,1); }}
0 0
- TYVJ 1427 线段树的基本操作
- BZOJ3224 [Tyvj 1728] [普通平衡树] Treap的基本操作
- 线段树的基本操作
- 线段树的基本操作
- TYVJ 1427 小白逛公园 线段树
- tyvj 1427 小白逛公园 (线段树)
- 基本线段树操作
- 有关线段树的基本操作模板
- tyvj P1038 忠诚 线段树
- 线段树 递归 基本操作
- 数据结构--线段树--基本操作
- 线段树及其基本操作
- 线段树基本操作讲解
- 线段树基本操作C++
- 自学线段树的一些最最基本的操作
- tyvj:1038 忠诚 线段树 区间查询
- 线段树基本操作模板 hdu1166 hdu1754
- 线段树(一) _概述 基本操作
- 【linux c】c语言源程序到最终生成可执行文件的过程_学习笔记_001
- linux运行级别与服务
- 欢迎使用CSDN-markdown编辑器
- java中常见的类--包装类
- 文件目录类命令:Linux的五个查找命令
- TYVJ 1427 线段树的基本操作
- Handler浅记
- centos 6.5 安装 docker 容器
- 写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。要求用线程间的通信
- 【数据结构】红黑树
- LM3S5B91用JTAG调试下载程序时需要在KEIL模板中做以下设置
- Java代码块概念
- GitHub使用总结
- GCC的编译过程