UVA - 11054 Wine trading in Gergovia 扫描法

题目:点击打开题目链接

思路:考虑第一个村庄,如果第一个村庄需要买酒,那么a1>0,那么一定有劳动力从第二个村庄向第一个村庄搬酒,这些酒可能是第二个村庄生产的,也可能是从其他村庄搬过来的,但这一布我们只考虑这一步的劳动力需求。于是,在第二个村庄,我们可以忽略第一个,视为只有编号为2-n的村庄,第二个村庄的需求转化为a1+a2,以此类推

AC代码:

 1 #include <iostream>
 2 #include <cstdlib>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int n;
 9     while(cin >> n && n) {
10         long long ans = 0, a, last = 0;
11         for(int i = 0; i < n; i++) {
12             cin >> a;
13             ans += abs(last);
14             last += a;
15         }
16         cout << ans << endl;
17     }
18     return 0;
19 }

 

posted @ 2018-07-11 22:36  FanJiaming  阅读(157)  评论(0)    收藏  举报