uva - 11054 - Wine trading in Gergovia(贪心)

题意:一个小镇上有n个居民,都以卖酒为生,城镇的运作模式就是每个居民买其他的酒。假定酒每天的需求量和销售量相同。但是运酒需要运费,运费等于每个居民的房子到其他居民的房子的距离*交易量(居民住在一条直线上)。求最小的交易量。

方法:参考了网上的代码,让邻居间进行交易,既让后一个满足前一个。例如即使前一个是买,后一个也是买也让后一个卖给前一个人。具体为什么也说不太清楚。。

AC代码:

#include <iostream>    
#include <iomanip>    
#include <string>    
#include <cstring>    
#include <cstdio>    
#include <queue>    
#include <stack>    
#include <algorithm>    
#include <cmath>    
#include <ctime>

using namespace std;  
const int maxn = 100000+10;

int arr[maxn];

int main()
{
#ifdef Local      
	freopen("a.in", "r", stdin);  
#endif
	int n = 0;
	while (cin >> n && n)
	{
		int i = 0;
		for (i = 0; i < n; i++)
			cin >> arr[i];
		long long int ans = 0;
		for (i = 0; i < n-1; i++)
		{
			ans += abs(arr[i]);
			arr[i+1] += arr[i];
		}
		cout << ans << endl;
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值