解题关键:最大子段和需要多个信息维护。

注意查询时的pushup。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<iostream>
#define inf (1<<62)
using namespace std;
typedef long long ll;
const int maxn=;
ll a[maxn],sum[maxn<<],la[maxn<<],ra[maxn<<],gss[maxn<<];
int n;
struct node{
ll sum,la,ra,gss;
}; void pushup(int rt){
int l=rt<<,r=rt<<|;
la[rt]=max(la[l],sum[l]+la[r]);
ra[rt]=max(ra[r],sum[r]+ra[l]);
gss[rt]=max(ra[l]+la[r],gss[l]);
gss[rt]=max(gss[rt],gss[r]);
sum[rt]=sum[l]+sum[r];
}
void build(int rt,int l,int r){
if(l==r){
la[rt]=ra[rt]=gss[rt]=sum[rt]=a[l];
return;
}
int mid=(l+r)>>;
build(rt<<,l,mid);
build(rt<<|,mid+,r);
pushup(rt);
} //query有问题,也需要pushup
node query(int rt,int l,int r,int tl,int tr){
if(tl<=l&&tr>=r){
return {sum[rt],la[rt],ra[rt],gss[rt]};
}
int mid=(l+r)>>;
if(tr<=mid) return query(rt<<, l, mid,tl, tr);
if(tl>mid) return query(rt<<|, mid+, r,tl, tr);
node lo=query(rt<<, l, mid,tl, tr),ro=query(rt<<|, mid+, r,tl, tr),ans;
ans.sum = lo.sum + ro.sum;
ans.gss = max(max(lo.gss, ro.gss), lo.ra + ro.la);
ans.la = max(lo.la, lo.sum + ro.la);
ans.ra = max(ro.ra, ro.sum + lo.ra);
return ans;
} int main(){
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%lld",a+i);
build(,,n);
int q,t1,t2;
scanf("%d",&q);
for(int i=;i<=q;i++){
scanf("%d%d",&t1,&t2);
ll ans=query(,,n,t1,t2).gss;
printf("%lld\n",ans);
}
return ;
}

[codevs3981]动态最大子段和不带修改(线段树)的更多相关文章

  1. [BZOJ3295] [Cqoi2011]动态逆序对(带修改主席树)

    题目描述 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序 ...

  2. 【bzoj1901】dynamic ranking(带修改主席树/树套树)

    题面地址(权限题) 不用权限题的地址 首先说说怎么搞带修改主席树? 回忆一般的kth问题,我们的主席树求的是前缀和,这样我们在目标区间的左右端点的主席树差分下就能求出kth. 那么我们如何支持修改操作 ...

  3. 少年,想学带修改主席树吗 | BZOJ1901 带修改区间第k小

    少年,想学带修改主席树吗 | BZOJ1901 带修改区间第k小 有一道题(BZOJ 1901)是这样的:n个数,m个询问,询问有两种:修改某个数/询问区间第k小. 不带修改的区间第k小用主席树很好写 ...

  4. BZOJ 1901: Zju2112 Dynamic Rankings | 带修改主席树

    题目: emmmm是个权限题 题解: 带修改主席树的板子题,核心思想是用树状数组维护动态前缀和的性质来支持修改 修改的时候修改类似树状数组一样进行logn个Insert 查询的时候同理,树状数组的方法 ...

  5. BZOJ 1146: [CTSC2008]网络管理Network 带修改主席树_树套树_DFS序

    Description M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路 ...

  6. FJUT3574 HOME_W的附加题(带权线段树)题解

    题意: 给定n个数a1,a2,a3,……an.和m次操作. 每次操作格式如下 x y k   表示将a[x]替换为y.并求替换后,前k小的数之和 思路:我们用带权线段树维护权值,这里就是维护i的个数n ...

  7. Codeforces Round #538 (Div. 2) F 欧拉函数 + 区间修改线段树

    https://codeforces.com/contest/1114/problem/F 欧拉函数 + 区间更新线段树 题意 对一个序列(n<=4e5,a[i]<=300)两种操作: 1 ...

  8. POJ 2528 - Mayor's posters - [离散化+区间修改线段树]

    题目链接:http://poj.org/problem?id=2528 Time Limit: 1000MS Memory Limit: 65536K Description The citizens ...

  9. codevs3981动态最大子段和(线段树)

    3981 动态最大子段和  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description 题目还是简单一点好... 有n个数,a ...

随机推荐

  1. 以gevent(协程) 方式跑uwsgi服务

    当你的系统存在一些IO或网络请求较久的操作时, 如果以默认的方式启动uwsgi服务, 那么如果这类请求过多的时候, 所以进程被卡死. uwsgi就无法再对后续请求做处理了. 这时可以用gevent的方 ...

  2. Oracle 使用RMAN COPY 移动 整个数据库 位置 示例

    一.数据迁移说明 在DBA的工作中会遇到数据迁移的情况,比如将本地磁盘迁移到ASM,亦或者需要更换存储设备,那么我就需要迁移整个数据库的存储位置. 如果只是移动表空间或者数据文件,我们可以将表空间或者 ...

  3. Iterations --codility

    lesson 1:Iterations 1. BinaryGap-----[100%] Find longest sequence of zeros in binary representation ...

  4. MySQL主从报错解决:Failed to initialize the master info structure

    大清早收到一个MySQL的自定义语言告警 :replication interrupt,看来是主从同步报错了. 登陆MySQL,执行 show slave status \G 发现salve已经停止了 ...

  5. StreamTool

    public class StreamTool { //从流中读取数据 public static byte[] read(InputStream inStream) throws Exception ...

  6. TMS320C6657双核DSP的图像处理系统开发(1):硬件相关tips

             1.前言 新项目中打算对现有的TMS320C6455+Kintex7 FPGA平台进行升级,采用TMS320C6657作为新核心,主要考虑到几点点: 1)具备DDR3接口,可以更加方 ...

  7. jmeter线程组 讲解

  8. 20165226 实验四 Android程序设计

    实验四 Android程序设计 实验目的 一.Android Studio的安装测试 二.Activity测试 三.UI测试 四.布局测试 五.事件处理测试 实验内容及步骤 (一)Android St ...

  9. Java运算符,位运算

    注意:位运算符针对整数的补码进行运算,所以运算结果也是补码 &(与运算) 将数据转化为补码形式,然后将0看作false,将1看作true,按位进行与运算,最后将结果转化为十进制来显示     ...

  10. PAT 甲级 1007 Maximum Subsequence Sum (25)(25 分)(0不是负数,水题)

    1007 Maximum Subsequence Sum (25)(25 分) Given a sequence of K integers { N~1~, N~2~, ..., N~K~ }. A ...