您的位置:首页 > 编程语言 > Go语言

uva 11054 Wine trading in Gergovia(贪心)

2013-08-24 14:44 447 查看
题目连接:11054 - Wine trading in Gergovia

题目大意:有N户人家住在一条街上,每户人家有需求和供应葡萄酒, 因为路程的不同,导致交易葡萄酒的成本不同,成不等于交易量* 路程,求,最少的交易成本使得每户人家的需求和供应的到满足,(总需求= 总供应)。

解题思路:贪心的思想, 最左边的人家想要获得或者是卖出,一定是对右边的人家进行操作,所以问题可以转化成第二家人的需求变成num[0] + num[1], 而运输量即为num[0]的绝对值,不管第二户人家的需求与第一户人家的需求是否匹配或者数量够不够,都可以看成是人家1在买卖过程中将货物暂时放在人家2,以此类推到最后一户人家。

注意总和要用long long 。

#include <stdio.h>
#include <stdlib.h>
const int N = 1000005;

int num
;
int main() {
int n;
while (scanf("%d", &n), n) {
for (int i = 0; i < n; i++)
scanf("%d", &num[i]);

long long sum = 0;
for (int i = 0; i < n - 1; i++) {
sum += abs(num[i]);
num[i + 1] += num[i];
}
printf("%lld\n", sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: