您的位置:首页 > 编程语言 > Go语言

ACM 扫描法 Wine trading in Gergovia

2017-07-23 16:47 260 查看
滴,集训第七天打卡。

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

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

这里贴一题扫描法。

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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  扫描法