题目

传送门:QWQ

分析

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

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

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

代码

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

【BZOJ】1756: Vijos1083 小白逛公园(线段树)的更多相关文章

  1. Bzoj 1756: Vijos1083 小白逛公园 线段树

    1756: Vijos1083 小白逛公园 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1021  Solved: 326[Submit][Statu ...

  2. BZOJ 1756: Vijos1083 小白逛公园

    题目 1756: Vijos1083 小白逛公园 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 856  Solved: 264[Submit][Sta ...

  3. [日常摸鱼]Vijos1083小白逛公园-线段树

    题意:单点修改,询问区间最大子段和,$n\leq 5e5$ 考虑分治的方法$O(nlogn)$求一次最大子段和的做法,我们是根据中点分成左右两个区间,那么整个区间的答案要么是左边答案,要么是右边答案, ...

  4. Vijos 1083 小白逛公园(线段树)

    线段树,每个结点维护区间内的最大值M,和sum,最大前缀和lm,最大后缀和rm. 若要求区间为[a,b],则答案max(此区间M,左儿子M,右儿子M,左儿子rm+右儿子lm). ----------- ...

  5. [vijos]1083小白逛公园<线段树>

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

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

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

  7. 线段树 || BZOJ1756: Vijos1083 小白逛公园 || P4513 小白逛公园

    题面:小白逛公园 题解: 对于线段树的每个节点除了普通线段树该维护的东西以外,额外维护lsum(与左端点相连的最大连续区间和).rsum(同理)和sum……就行了 代码: #include<cs ...

  8. 【线段树】bzoj1756 Vijos1083 小白逛公园

    我们知道,求一段序列的最大子段和是O(n)的,但是这样是显然会超时的. 我们需要一个数据结构来支持修改和计算的操作,对于这种修改一个而查询区间的问题,考虑使用线段树. 在线段树中,除了左端点,右端点, ...

  9. bzoj1756 Vijos1083 小白逛公园

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

随机推荐

  1. 优化 Redis 的使用策略

    Redis Key 的命名策略 Redis 是 K-V 形式的缓存数据库,每一个需要缓存的 Object 都需要唯一的 Key 来标识.但是,我们日常在做开发的时候,经常会出现一个公司或者部门之间共用 ...

  2. Git入门及常用命令(1)(window环境下)

    文章参考摘抄自:git教程 1.git的安装 Windows下要使用很多Linux/Unix的工具时,需要Cygwin这样的模拟环境,Git也一样.Cygwin的安装和配置都比较复杂,就不建议你折腾了 ...

  3. maven3常用命令、java项目搭建、web项目搭建

    ------------------------------maven3常用命令--------------------------- 1.常用命令 1)创建一个Project mvn archety ...

  4. 导出csv文件,导出axlsx文件。gem 'Axlsx-Rails' (470🌟);导入csv文件。

    汇出 CSV 档案 需求:后台可以汇出报名资料 有时候后台功能做再多,也不如 Microsoft Excel 或 Apple Numbers 试算表软件提供的分析功能,这时候如果有汇出功能,就可以很方 ...

  5. UVALive-3989 Ladies' Choice (稳定婚姻问题)

    题目大意:稳定婚姻问题.... 题目分析:模板题. 代码如下: # include<iostream> # include<cstdio> # include<queue ...

  6. Vue.js学习笔记:在元素 和 template 中使用 v-if 指令

    f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...

  7. ubuntu14.04安装Android Studio出现error while loading shared libraries: libz.so.1的解决方法

    参考博客地址: http://blog.csdn.net/newairzhang/article/details/28656693 安装lib32z1就可以解决,如下: 首先,sudo apt-get ...

  8. IE 问题集合

    1.zIndex在ie需要 先对比父级的层级

  9. mysql sql语句高级写法

    将user表的内容,插入到team_member表INSERT INTO team_member (Nike,HeadImageUrl) SELECT Nike,HeadImageUrl FROM u ...

  10. I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard.sh hacking

    #!/bin/sh # 参考文章: # . MFGTool Emmc mksdcard.sh MFGTool Emmc mksdcard.sh comment # http://jordonwu.gi ...