ACM 扫描法 Wine trading in Gergovia

来源:互联网 发布:闰年的判断c语言 编辑:程序博客网 时间:2024/06/09 20:54

滴,集训第七天打卡。

今天是紫书第八章训练,是高效算法设计..

就是不用奇技淫巧都会超时...

这里贴一题扫描法。


UVA 11054 Wine trading in Gergovia



题目大意:直线上有n个等距的村庄,每个村庄要么买酒(ai>0),要么卖酒(ai<0),所有村庄供需平衡,即所有ai之和等于0.把k个单位的酒从一个村庄运到相邻村庄需要k个单元的劳动力。计算最少需要多少劳动力可以满足所有村庄的需求。


思路:用扫描法,从最左边的村庄开始。

#include <stdio.h>#include <stdlib.h>int main(){int n,i;long long ans,a,last;while(scanf("%d",&n)){if(n==0)break;ans=last=0;for(i=0;i<n;i++){scanf("%lld",&a);ans+=abs(last);last+=a;}printf("%lld\n",ans);}}