Wine trading in Gergovia UVA

来源:互联网 发布:西门淘宝店网址 编辑:程序博客网 时间:2024/05/21 22:56

题意:有n个村庄,有的买酒,有的买酒,分别用+k,或-k来表示,现在要达到供需平衡,也就是所有的村庄值变为0,k个酒运到相邻村庄需要k个花费,求最小花费。

有个重要条件是他们之和为0,要达到最小花费,也就是要多少送多少,不多运也不少运,考虑最左边的村庄,如果买酒,k>0,那他需要的酒肯定是从右边送来,可以等价于是右边那一个村庄送来的,那么此时那个村庄的需求就是k1+k2,当k<0时,同样成立。所以每次加上当前位的需求,并更新下一位的需求,就是所求最小值。

// UVa11054 Wine trading in Gergovia// Rujia Liu#include<iostream>#include<algorithm>using namespace std;int main() {  int n;  while(cin >> n && n) {    long long ans = 0, a, last = 0;    for(int i = 0; i < n; i++) {      cin >> a;      last += a;      ans += abs(last);    }    cout << ans << "\n";  }  return 0;}


原创粉丝点击