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

2014-11-24 11:19:00 · 作者: · 浏览: 0

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

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

AC代码:

#include 
  
       
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
          
            #include 
           
             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; }