http://poj.org/problem?id=2750

之前做过类似的题 把一段的左连续最大、最小 右连续最大及最小及中间的连续更新出 就可以算出这段最大的连续和

注意不能全部加上 加上一特判 如果最大和是全部数的和就减去这段最小的和

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define N 100010
struct node
{
int va,lmax,rmin,lmin,rmax,smax,smin;
}p[N<<];
void pushup(int w)
{
p[w].va = p[w<<].va+p[w<<|].va;
p[w].lmax = max(p[w<<].lmax,p[w<<].va+p[w<<|].lmax);
p[w].lmin = min(p[w<<].lmin,p[w<<].va+p[w<<|].lmin);
p[w].rmax = max(p[w<<|].rmax,p[w<<|].va+p[w<<].rmax);
p[w].rmin = min(p[w<<|].rmin,p[w<<|].va+p[w<<].rmin);
p[w].smax = max(max(p[w].lmax,p[w].rmax),max(p[w<<].smax,p[w<<|].smax));
p[w].smax = max(p[w].smax,p[w<<].rmax+p[w<<|].lmax);
p[w].smin = min(min(p[w].lmin,p[w].rmin),min(p[w<<].smin,p[w<<|].smin));
p[w].smin = min(p[w].smin,p[w<<].rmin+p[w<<|].lmin);
}
void build(int l,int r,int w)
{
if(l==r)
{
scanf("%d",&p[w].va);
p[w].lmax=p[w].lmin=p[w].rmax=p[w].rmin=p[w].smax=p[w].smin=p[w].va;
return ;
}
int m = (l+r)>>;
build(l,m,w<<);
build(m+,r,w<<|);
pushup(w);
}
void update(int pp,int d,int l,int r,int w)
{
if(l==r)
{
p[w].va = d;
p[w].lmax=p[w].lmin=p[w].rmax=p[w].rmin=p[w].smax=p[w].smin=p[w].va;
return ;
}
int m = (l+r)>>;
if(pp<=m)
update(pp,d,l,m,w<<);
else
update(pp,d,m+,r,w<<|);
pushup(w);
}
int main()
{
int n,m,a,b,i;
while(cin>>n)
{
build(,n,);
cin>>m;
while(m--)
{
scanf("%d%d",&a,&b);
update(a,b,,n,);
if(p[].smax==p[].va)
cout<<p[].smax-p[].smin<<endl;
else
cout<<max(p[].smax,p[].va-p[].smin)<<endl;
}
}
return ;
}

poj2750Potted Flower (线段树)的更多相关文章

  1. poj2750--Potted Flower(线段树)

    题目链接:点击打开链接 题目大意:给出n个数排成一个环.求环的最大连续子序列,不能是总序列 建一个线段树来求最大子序列假设仅仅是一个序列.那么求最大连续子序列非常easy,可是假设是一个环,那就要考虑 ...

  2. POJ 2750 Potted Flower (线段树区间合并)

    开始懵逼找不到解法,看了网上大牛们的题解才发现是区间合并...  给你n个数形成一个数列环,然后每次进行一个点的修改,并输出这个数列的最大区间和(注意是环,并且区间最大只有n-1个数) 其实只需要维护 ...

  3. POJ.2750.Potted Flower(线段树 最大环状子段和)

    题目链接 /* 13904K 532ms 最大 环状 子段和有两种情况,比如对于a1,a2,a3,a4,a5 一是两个端点都取,如a4,a5,a1,a2,那就是所有数的和减去不选的,即可以计算总和减最 ...

  4. POJ 2750 Potted Flower(线段树+dp)

    题目链接 虽然是看的别的人思路,但是做出来还是挺高兴的. 首先求环上最大字段和,而且不能是含有全部元素.本来我的想法是n个元素变为2*n个元素那样做的,这样并不好弄.实际可以求出最小值,总和-最小,就 ...

  5. Potted Flower(线段树+dp)

    http://poj.org/problem?id=2750 题意:在一个圈中取若干个相邻的数,求他们的最大序列和.不能够同时取所有的数. 看了一篇解题报告写的很详细..http://blog.csd ...

  6. 【POJ 2750】 Potted Flower(线段树套dp)

    [POJ 2750] Potted Flower(线段树套dp) Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4566   ...

  7. poj2750 线段树 +DP Potted Flower

    问题描述:给定一个环形序列,进行在线操作,每次修改一个元素,输出环上的最大连续子列的和,但不能是完全序列. 算法:把环从一个地方,切断拉成一条直线,用线段树记录当前区间的非空最大子列和当前区间的非空最 ...

  8. POJ 2750 Potted Flower(线段树的区间合并)

    点我看题目链接 题意 : 很多花盆组成的圆圈,每个花盆都有一个值,给你两个数a,b代表a位置原来的数换成b,然后让你从圈里找出连续的各花盆之和,要求最大的. 思路 :这个题比较那啥,差不多可以用DP的 ...

  9. 【BZOJ-4422】Cow Confinement 线段树 + 扫描线 + 差分 (优化DP)

    4422: [Cerc2015]Cow Confinement Time Limit: 50 Sec  Memory Limit: 512 MBSubmit: 61  Solved: 26[Submi ...

随机推荐

  1. C#网络通信

    Server: using System.Net; using System.Net.Sockets; using System; using System.Collections.Generic; ...

  2. Hello World 的makefile模板及其分析

    makefile模板: ifeq ($(KERNELRELEASE),) //判断KERNELRELEASE是否为空,只有执行make的当前目录为内核源代码目录时,该变量才不为空. KERNELDIR ...

  3. 通过telnet命令进行网络邮件发送

    1.建立smtp邮箱服务连接 open smtp.sina.com 2.连接上邮箱服务后进行握手操作 helo smtp.sina.com 3.输入帐号密码进行验证::此步后缓冲区会输出一些字符,你只 ...

  4. SPFA&邻接表 PASCAL

    题目来自CODE[VS]-->热浪 1557 热浪 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石       题目描述 Description 德克萨斯纯朴的民眾们这个 ...

  5. 解决Cisco VPN Client:Reason 442: Failed to Enable Virtual Adapter VPN连接问题

    大公司里肯定涉及不同地点的办公问题,这样VPN的使用就频繁了,今天遇到一个VPN连接问题,分享给大家,看一眼,以后不在这问题上耗费太多功夫. 在win7上连接vpn时抛出“failed to enab ...

  6. 在 Windows 8 或 8.1 上安装 .NET Framework 3.5 安装错误:0x800f0906、0x800F081F

    昨天给一天新装Windows 8.1的PC装.NET Framework 3.5 发现联网速度很慢,并且在长久等待过后直接报错了:0x800f0906 经过Bing,发现了解决方案: 如果根据需要安装 ...

  7. 使用nodejs搭建服务器显示HTML页面

    首先安装express 在命令行输入:npm install express -g 安装完成后可以查看安装情况:npm ls -g 然后创建server.js文件 var express = requ ...

  8. 1018: [SHOI2008]堵塞的交通traffic - BZOJ

    Description 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常奇特,整个国家的交通系统可以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城市,相邻的城市之间有一 ...

  9. 4.0 spring-注册解析的Bean

    1.0 registerBeanDefinition 对于配置文件,解析也解析完了,装饰也装饰完了,对于得到的BeanDefinition已经可以满足后续的使用了,唯一剩下的工作就是注册了, 也就是: ...

  10. 【LCA】bzoj 2144:跳跳棋

    2144: 跳跳棋 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 248  Solved: 121[Submit][Status][Discuss] ...