标签:des style http color os io strong for
| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 4186 | Accepted: 1581 |
Description

Input
Output
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
正常看得懂吧,代码有点小解释。
AC代码:
#include<algorithm>
#include<stdio.h>
#include<iostream>
using namespace std;
struct Node{
int left,right;
int mx,mn,sum;
int nmx,nmn,rmx,lmx,rmn,lmn;
}a[400010];
void push(int cur){
a[cur].mn=min(a[cur<<1].mn,a[cur<<1|1].mn); //最小值
a[cur].mx=max(a[cur<<1].mx,a[cur<<1|1].mx); //最大值
a[cur].sum=a[cur<<1].sum+a[cur<<1|1].sum; //和
a[cur].rmx=max(a[cur<<1|1].rmx,a[cur<<1].rmx+a[cur<<1|1].sum); //从右向左的最大连续和
a[cur].lmx=max(a[cur<<1].lmx,a[cur<<1].sum+a[cur<<1|1].lmx); //从左向右的最大连续和
a[cur].rmn=min(a[cur<<1|1].rmn,a[cur<<1].rmn+a[cur<<1|1].sum); //从右向左的最小连续和
a[cur].lmn=min(a[cur<<1].lmn,a[cur<<1].sum+a[cur<<1|1].lmn); //从左向右的最小连续和
a[cur].nmx=max(max(a[cur<<1].nmx,a[cur<<1|1].nmx),a[cur<<1].rmx+a[cur<<1|1].lmx); //最大连续和
a[cur].nmn=min(min(a[cur<<1].nmn,a[cur<<1|1].nmn),a[cur<<1].rmn+a[cur<<1|1].lmn); //最小连续和
}
void built(int cur,int x,int y){
a[cur].left=x; a[cur].right=y;
if(x==y){
scanf("%d",&a[cur].sum);
a[cur].mx=a[cur].mn=a[cur].nmx=a[cur].nmn=a[cur].rmx=a[cur].lmx=a[cur].rmn=a[cur].lmn=a[cur].sum;
return ;
}
int mid=(x+y)>>1;
built(cur<<1,x,mid);
built(cur<<1|1,mid+1,y);
push(cur);
}
void update(int cur,int x,int val){
if(a[cur].left==x && x==a[cur].right){
a[cur].sum=val;
a[cur].mx=a[cur].mn=a[cur].nmx=a[cur].nmn=a[cur].rmx=a[cur].lmx=a[cur].rmn=a[cur].lmn=a[cur].sum;
return ;
}
int mid=(a[cur].left+a[cur].right)>>1;
if(x<=mid)
update(cur<<1,x,val);
else
update(cur<<1|1,x,val);
push(cur);
}
int main(){
int n,m;
scanf("%d",&n);
built(1,1,n);
scanf("%d",&m);
while(m--){
int x,val;
scanf("%d%d",&x,&val);
update(1,x,val);
if(a[1].sum==a[1].nmx){
printf("%d\n",a[1].sum-a[1].nmn);
}
else{
printf("%d\n",max(a[1].nmx,a[1].sum-a[1].nmn));
}
}
return 0;
}
poj 2750(线段树的动态规划),布布扣,bubuko.com
标签:des style http color os io strong for
原文地址:http://blog.csdn.net/my_acm/article/details/38639921