Potted Flower
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 3872   Accepted: 1446

Description

The little cat takes over the management of a new park. There is a large circular statue in the center of the park, surrounded by N pots of flowers. Each potted flower will be assigned to an integer number (possibly negative) denoting how attractive it is. See the following graph as an example:

(Positions of potted flowers are assigned to index numbers in the range of 1 ... N. The i-th pot and the (i + 1)-th pot are consecutive for any given i (1 <= i < N), and 1st pot is next to N-th pot in addition.)

The board chairman informed the little cat to construct "ONE arc-style cane-chair" for tourists having a rest, and the sum of attractive values of the flowers beside the cane-chair should be as large as possible. You should notice that a cane-chair cannot be a total circle, so the number of flowers beside the cane-chair may be 1, 2, ..., N - 1, but cannot be N. In the above example, if we construct a cane-chair in the position of that red-dashed-arc, we will have the sum of 3+(-2)+1+2=4, which is the largest among all possible constructions.

Unluckily, some booted cats always make trouble for the little cat, by changing some potted flowers to others. The intelligence agency of little cat has caught up all the M instruments of booted cats' action. Each instrument is in the form of "A B", which means changing the A-th potted flowered with a new one whose attractive value equals to B. You have to report the new "maximal sum" after each instruction.

Input

There will be a single test data in the input. You are given an integer N (4 <= N <= 100000) in the first input line.

The second line contains N integers, which are the initial attractive value of each potted flower. The i-th number is for the potted flower on the i-th position.

A single integer M (4 <= M <= 100000) in the third input line, and the following M lines each contains an instruction "A B" in the form described above.

Restriction: All the attractive values are within [-1000, 1000]. We guarantee the maximal sum will be always a positive integer.

Output

For each instruction, output a single line with the maximum sum of attractive values for the optimum cane-chair.

Sample Input

5
3 -2 1 2 -5
4
2 -2
5 -5
2 -4
5 -1

Sample Output

4
4
3
5

Source

POJ Monthly--2006.01.22,Zeyuan Zhu
  


 线段树+dp 感觉好经典啊  log(n)就能求出一串数字的最大的连续和

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#define N 100010
using namespace std;
struct num
{
int l,r,sum,maxsum,minsum,maxl,maxr,minl,minr;
}a[4*N];
int b[N];
int main()
{
//freopen("data.in","r",stdin);
void init(int k,int l,int r);
void update(int k,int pos,int val);
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=1;i<=n;i++)
{
scanf("%d",&b[i]);
}
init(1,1,n);
int m;
scanf("%d",&m);
while(m--)
{
int x,y;
scanf("%d %d",&x,&y);
update(1,x,y);
if(a[1].sum==a[1].maxsum)
{
printf("%d\n",a[1].sum-a[1].minsum);
}else
{
printf("%d\n",max(a[1].maxsum,a[1].sum-a[1].minsum));
}
}
}
return 0;
}
void pushup(int k)
{
int left=k<<1,right=k<<1|1;
a[k].sum=a[left].sum+a[right].sum;
a[k].maxsum=max(max(a[left].maxsum,a[right].maxsum),a[left].maxr+a[right].maxl);
a[k].minsum=min(min(a[left].minsum,a[right].minsum),a[left].minr+a[right].minl);
a[k].maxl=max(a[left].maxl,a[left].sum+a[right].maxl);
a[k].maxr=max(a[right].maxr,a[right].sum+a[left].maxr);
a[k].minl=min(a[left].minl,a[left].sum+a[right].minl);
a[k].minr=min(a[right].minr,a[right].sum+a[left].minr);
}
void init(int k,int l,int r)
{
a[k].l=l; a[k].r=r;
if(l==r)
{
a[k].sum=a[k].maxsum=a[k].minsum=a[k].maxr=a[k].maxl=a[k].minr=a[k].minl=b[l];
return ;
}
int mid=(l+r)>>1;
init(k<<1,l,mid);
init(k<<1|1,mid+1,r);
pushup(k);
}
void update(int k,int pos,int val)
{
if(a[k].l==a[k].r)
{
a[k].sum=a[k].maxsum=a[k].minsum=a[k].maxr=a[k].maxl=a[k].minr=a[k].minl=val;
return ;
}
int mid=(a[k].l+a[k].r)>>1;
if(mid>=pos)
{
update(k<<1,pos,val);
}else
{
update(k<<1|1,pos,val);
}
pushup(k);
}

POJ 2750 Potted Flower的更多相关文章

  1. (简单) POJ 2750 Potted Flower,环+线段树。

    Description The little cat takes over the management of a new park. There is a large circular statue ...

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

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

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

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

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

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

  5. POJ 2750 Potted Flower (单点改动求线段树上最大子序列和)

    题目大意: 在一个序列上每次改动一个值,然后求出它的最大的子序列和. 思路分析: 首先我们不考虑不成环的问题.那就是直接求每一个区间的最大值就好了. 可是此处成环,那么看一下以下例子. 5 1 -2 ...

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

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

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

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

  8. POJ 2750 鸡兔同笼

    参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6414781.html POJ 2750鸡兔同笼 总时间限制:1000ms 内存限制:65536kB ...

  9. [POJ2750]Potted Flower

    Description The little cat takes over the management of a new park. There is a large circular statue ...

随机推荐

  1. React Native:使用 JavaScript 构建原生应用 详细剖析

    数月前,Facebook 对外宣布了正在开发的 React Native 框架,这个框架允许你使用 JavaScript 开发原生的 iOS 应用——就在今天,Beta 版的仓库释出了! 基于 Pho ...

  2. IS about 64bit system

    This function supports the 64-bit parts of the registry by using the REGDB_OPTION_WOW64_64KEY option ...

  3. easy UI demo 含数据库加载示例

    easyUI 部分代码在Googlecode 托管时而被抢此文件包含了所有官方demo,作为备份 下载地址http://pan.baidu.com/s/1pJ9hS5H

  4. django框架的网站发布后设置是否允许被别人iframe引用

    例如: <iframe src="http://127.0.0.1:8008" style="width:100%;height:400px;">& ...

  5. ruby特性

    1. ruby类结构 每个类都是Class类的对象 所有类都继承自BasicObject类(Module类不能实例化) 2. 单例方法 单例方法可以不定义在类中,只为某个对象定义方法,所以称为单例方法 ...

  6. 10071 - Back to High School Physics

    Problem B Back to High School Physics Input: standard input Output: standard output A particle has i ...

  7. Mac上RoR环境搭建问题

    昨天一晚上折磨的我啊都快疯掉了. 按照http://railstutorial-china.org方法配制,到rvm requirements这个命令执行时就麻烦事来了. WutekiMacBook- ...

  8. iOS获取键盘的高度

  9. 李洪强漫谈iOS开发[C语言-033]-三元运算符的应用

  10. mysql优化21条经验(转)

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序 员需要去关注的事情.当我们去设计数据库表结构,对操作数 ...