UVA11054 Wine trading in Gergovia

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

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

注意总和要用long long 。

#include <iostream>
#include <cmath>

using namespace std;

const int maxn=1e5+10;

int n;

int main()
{
    ios::sync_with_stdio(false);cin.tie(0);
    while(cin>>n&&n!=0)
    {
        long long last=0,ans=0,x;
        for(int i=0;i<n;i++){
            cin>>x;
            ans+=abs(last);
            last+=x;
        }
        cout<<ans<<endl;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/Fy1999/p/9388348.html