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. 自从用了Less 编写css,你比以前更快了~(sublime编译)

    之所以用这个标题呢,主要是最近调侃杰伦太有意思了. 好吧,开个玩笑而已. 如果你了解过Less,并对之很熟悉,就不用往下看了. 如果你没用过,恭喜,这是一个入门级的教程,学会了它,可以为你节省10%的 ...

  2. Using jQuery to add a dynamic “Back To Top” floating button with smooth scroll

    Ever read a really long blog post or article and then had to scroll all the way up to the top of the ...

  3. mvc 之 @Html.DropDownList

    Dictionary<string, string> myDic = new Dictionary<string, string>(); myDic.Add(System.DB ...

  4. Spark小课堂Week1 Hello Spark

    Spark小课堂Week1 Hello Spark 看到Spark这个词,你的第一印象是什么? 这是一朵"火花",官方的定义是Spark是一个高速的.通用的.分布式计算系统!!! ...

  5. 关于location

    ---恢复内容开始--- window.location跳转+替换+刷新 一.最外层top跳转页面,适合用于iframe框架集 top.window.location.href("${pag ...

  6. linux下获得块设备大小

    运行结果如下 jackie@Ubuntu:~/work/0602$ sudo ./a.out /dev/sda/dev/sda3907029168,2000398934016 //BLKGETSIZE ...

  7. Node.js的process模块

    process模块用来与当前进程互动,可以通过全局变量process访问,不必使用require命令加载.它是一个EventEmitter对象的实例. 属性 process对象提供一系列属性,用于返回 ...

  8. Spring execution 表达式

    execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) th ...

  9. 【BZOJ 1877】 [SDOI2009]晨跑

    Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十 ...

  10. sql之独立子查询和相关子查询总结

    1.独立子查询:顾名思义:就是子查询和外层查询不存在任何联系,是独立于外层查询的: 下面就看一个例子: 有一张订单表 Sales.Order 和一张 客户表 Sales.Customer 下面的sql ...