uva-11054-模擬
阿新 • • 發佈:2018-12-16
題意:一條街有許多賣酒的店,有些店需要進酒,有些店需要出酒,所有的店的需求總和為0,問怎麼移動,使酒的移動總和最少。
模擬,考慮一家店的需求為xi,無論是從左或者是從右或者其他形式,讓xi->0的花費總是xi.所以只要從左往右開始計算每家的花費,或者從右往左也行.
這樣算是最容易的方式.
#include "pch.h" #include <string> #include<iostream> #include<map> #include<memory.h> #include<vector> #include<algorithm> #include<queue> #include<vector> #include<stack> #include<math.h> #include<iomanip> #include<bitset> namespace cc { using std::cout; using std::endl; using std::cin; using std::map; using std::vector; usingstd::string; using std::sort; using std::priority_queue; using std::greater; using std::vector; using std::swap; using std::stack; using std::bitset; constexpr int N = 100000; int a[N]; void solve() { int n; while (cin>>n&&n) {long long sum = 0; int cur = 0; long long pre = 0; for (int i=0;i<n;i++) { cin >> cur; if (pre < 0) sum += (pre*-1); else sum += pre; pre += cur; } cout << sum << endl; } } }; int main() { #ifndef ONLINE_JUDGE freopen("d://1.text", "r", stdin); #endif // !ONLINE_JUDGE cc::solve(); return 0; }