UVA 11054 Wine trading in Gergovia

题意:

  一条街上住着连续的n户人家,没相邻的两户人相隔一个单位。街上的每户人都需要买一定数量的葡萄酒或者卖掉葡萄酒,保证所有人家买进的总量与卖出的数量一致。每户可以选择与其他任何家交易。但是因为相隔路程不一样,所以需要路费。路费是按照交易量*相隔距离算的。求所有人都交易满足,最小的路费总和是多少

分析:

  题很简单,只要看懂就好了。由于路费和距离相关,所以需要让路程越小越好。

代码:

  

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int num[100002];
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
int i;
for(i=0;i<n;i++)
scanf("%d",&num[i]);
long long ans=0;
for(i=0;i<n-1;i++)
{
ans+=abs(num[i]);
num[i+1]+=num[i];
}
printf("%lld\n",ans);
}
}
posted @ 2015-11-10 16:18  幻世沉溺  阅读(122)  评论(0编辑  收藏  举报