题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=21418
紫书P237的例题8--5。英文没看。
题意:紫书上用的是动态处理,内存几乎为零。不过,我没那么强,还是用自己方式写吧。用dp[i]表示i为最后一个的需求量。则状态转移方程为:dp[i]=dp[i+1]+A[i]。实质就是价值的转移。即紫书说的价值转换。
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#define LL long long
#define maxn 100010
using namespace std;
int A[maxn],N;
LL dp[maxn];
int main(){
while(cin>>N && N){
for(int i=0;i<N;i++) scanf("%d",A+i);
dp[N-1]=A[N-1];
for(int i=N-2;i>=0;i--)
dp[i]=dp[i+1]+A[i];
LL ans=0;
for(int i=0;i<N;i++) ans+=fabs(dp[i]);
printf("%lld\n",ans);
}
return 0;
}