题目

传送门:QWQ

分析

线段树维护一下最大子序列

维护一下最大前缀 最大后缀  区间和 就ok了

好像只能用结构体。。。。。

代码

#include <bits/stdc++.h>
using namespace std;
const int maxn=505000;
int val[maxn<<2] ;
struct Node{int left,right,maxv,sum;
}tree[maxn<<2];
void update(int o,int l,int r){tree[o].sum=tree[o<<1].sum+tree[o<<1|1].sum;tree[o].left=max(tree[o<<1].left,tree[o<<1].sum+tree[o<<1|1].left);tree[o].right=max(tree[o<<1|1].right,tree[o<<1|1].sum+tree[o<<1].right);tree[o].maxv=max(tree[o<<1].right+tree[o<<1|1].left,max(tree[o<<1].maxv,tree[o<<1|1].maxv));
}
void build(int o,int l,int r){if(l==r){tree[o].sum=tree[o].left=tree[o].right=tree[o].maxv=val[l];return;}int mid=l+r>>1;build(o<<1,l,mid); build(o<<1|1,mid+1,r);update(o,l,r);
}
void modify(int o,int l,int r,int v,int L){if(l>L||r<L) return;if(l==r){ tree[o].sum=tree[o].left=tree[o].right=tree[o].maxv=v; return;}int mid=l+r>>1;modify(o<<1,l,mid,v,L); modify(o<<1|1,mid+1,r,v,L);update(o,l,r);
}
Node query(int o,int l,int r,int L,int R){if(L<=l&&R>=r) return tree[o]; int mid=l+r>>1;if(R<=mid) return query(o<<1,l,mid,L,R);else if(L>mid) return query(o<<1|1,mid+1,r,L,R);else{Node res1=query(o<<1,l,mid,L,R),res2=query(o<<1|1,mid+1,r,L,R);Node res;res.sum=res1.sum+res2.sum;res.left=max(res1.left,res1.sum+res2.left);res.right=max(res2.right,res2.sum+res1.right);res.maxv=max(res1.right+res2.left,max(res1.maxv,res2.maxv));return res;}
}int main(){int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%d",&val[i]);build(1,1,n);int k,a,b;while(m--){scanf("%d%d%d",&k,&a,&b);if(k==1){if(a>b) swap(a,b); printf("%d\n",query(1,1,n,a,b).maxv);}else modify(1,1,n,b,a);}
}

转载于:https://www.cnblogs.com/noblex/p/9298686.html

【BZOJ】1756: Vijos1083 小白逛公园(线段树)相关推荐

  1. P4513 小白逛公园 (线段树)

    题目链接 Solution 线段树是一门比较刁钻的手艺... 此题我们需要维护 \(4\) 个变量: \(amx\) 代表当前节点的最大值. \(lmx\) 代表当前节点以左端点为起点的区间最大值. ...

  2. TYVJ1427 小白逛公园

    P1427 小白逛公园 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 小新经常陪小白去公园玩,也就是所谓的遛狗啦-在小新家附近有一条"公园路&qu ...

  3. 【ybt高效进阶4-4-3】【luogu P4513】公园遛狗 / 小白逛公园

    公园遛狗 / 小白逛公园 题目链接:ybt高效进阶4-4-3 / luogu P4513 题目大意 给你一个序列,要维护两个操作. 单点修改和在一个区间中找权值最大的子区间的权值. 思路 其实这个是很 ...

  4. BZOJ #3064. Tyvj 1518 CPU监控(线段树,历史最值)

    BZOJ #3064. Tyvj 1518 CPU监控(线段树,历史最值) Solution 我们考虑用线段树维护此题. 先不考虑历史最值. 大概需要维护一种特殊的懒标记(x,y)(x,y)(x,y) ...

  5. 公园遛狗 / 小白逛公园【线段树】

    >Link ybtoj公园遛狗 luogu P4513 >解题思路 这道题我做的时候只想到了build.insert怎么写,ask看了书以后写的(真的好巧妙T) 单点修改+区间查询使我们想 ...

  6. vijos 1083 小白逛公园

    描述 小新经常陪小白去公园玩,也就是所谓的遛狗啦-在小新家附近有一条"公园路",路的一边从南到北依次排着n个公园,小白早就看花了眼,自己也不清楚该去哪些公园玩了. 一开始,小白就根 ...

  7. P4513 小白逛公园

    题目描述 小新经常陪小白去公园玩,也就是所谓的遛狗啦- 在小新家附近有一条"公园路",路的一边从南到北依次排着nn个公园,小白早就看花了眼,自己也不清楚该去哪些公园玩了. 一开始, ...

  8. BZOJ.4695.最假女选手(线段树 Segment tree Beats!)

    题目链接 区间取\(\max,\ \min\)并维护区间和是普通线段树无法处理的. 对于操作二,维护区间最小值\(mn\).最小值个数\(t\).严格次小值\(se\). 当\(mn\geq x\)时 ...

  9. BZOJ 4719: [Noip2016]天天爱跑步 线段树合并

    title BZOJ 4719 LUOGU 1600 简化题意: 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每 ...

最新文章

  1. 【转】Linux root修改密码失败
  2. android.graphic.Path
  3. anchor译中文_anchor的意思在线翻译,解释anchor中文英文含义,短语词组,音标读音,例句,词源,同义词【澳典网ODict.Net】...
  4. react native text换行_基于React+Koa实现React SSR服务端渲染
  5. C++ opengl 方向光
  6. 吃奶酪(洛谷-P1433)
  7. 缺失值填充4——使用线性模型(岭回归、Lasso回归、ElasticNet回归)填充序列缺失值
  8. 那些终将消亡和被取代的科技产品
  9. matlab 深度学习
  10. 用XAML做网页!!—广告展示区
  11. 《MYSQL必知必会》—3~9.使用MySQL、检索数据列、排序检索数据列、过滤数据(WHERE子句、组合WHERE子句、通配符、正则表达式)
  12. c语言课程设计参考,c语言课程设计参考
  13. 数独超难题目_号称世界上最难的一道数独题,你敢来挑战吗?据说答案只有一种...
  14. P2P软件UFX被指藏后门搜客户信息 融都科技否认
  15. 《数学建模方法与分析》(《Mathematical Modeling》)读书笔记
  16. 文献检索(学术搜索)
  17. 卷积神经网络常见模块
  18. CAP迷思:关于分区容忍性
  19. 向量旋转(或矢量旋转或坐标轴旋转)后xy坐标重定位(vivado+cordic ip核+matlab) - 适用于数学爱好者
  20. 深度学习专业术语之英文介绍——附含历届ILSVRC冠亚军结果

热门文章

  1. 图像处理中的卷积与模板
  2. MVC教程第五篇:MVC整合Ajax
  3. Uploadify jquery+flash+UploadHandler.ashx .(用)
  4. 【opencv学习】单应性变换Homography
  5. 漫步最优化十九——封闭算法
  6. 去哪儿-20-detail-animation
  7. C++/C--lambda表达式与函数对象【转载】
  8. 局部敏感哈希(LSH)
  9. Hanoi 汉诺塔——通俗易懂地讲解(c++)
  10. Skywalking-05:在Skywalking RocketBot上添加监控图表