题目链接:点击打开链接
题目大意:有n个等距离的村庄,每个村庄要么买酒,要么卖酒,且买卖酒的需求平衡,输入n表示n个村庄,每个村庄的需求为ai; if(ai > 0) 表示买酒, else 表示卖酒;
题目分析:
设有n个村子,考虑最左边的村子,无论买酒还是卖酒,都一定是从相邻的右边村运过来或者或者向右边相邻的村子送过去。(不考虑右边村子的酒从哪里来);
这样考虑之后,类似的剩下n-1个村子依旧可以这样考虑;
参考代码:
//等价转换;
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int n, a[100000+10];
int main()
{
while(scanf("%d", &n) != EOF && n){
for(int i = 0; i < n; ++i) scanf("%d", &a[i]);
long long o = 0;
for(int i = 1; i < n; ++i){
o += abs(a[i-1]);
a[i] += a[i-1];
}
printf("%lld\n", o);
}
return 0;
}