UVa 11054 Wine trading in Gergovia【贪心】
2015-03-23 20:38
411 查看
题意:给出n个等距离的村庄,每个村庄要么买酒,要么卖酒,买酒和卖酒的总量相等,
把k个单位的酒从一个村庄运送到相邻的村庄,需要耗费k个单位劳动力,问怎样运送酒使得耗费的劳动力最少
买 卖 买 卖 买
5 -4 1 -3 1
可以从样例来模拟,第一个村庄需要买5桶酒,这5桶酒都是从右边的别的村庄运过来的,第二个村庄需要卖4桶酒,
那么可以这样想,第一个和第二个村庄捆绑在一起的需求量为 a1+a2,而a1+a2又是从别的村庄运送过来的
再比如说
第一个村庄买的是5,那么需要5个劳动力运过来,
第二个村庄卖的是4,那么是它运过来的,
所以这一趟只满足了4桶酒,剩下的1继续累加,直到遇到负数把它抵消,说明又有酒运过来了
感觉是一个村庄一个村庄累积= =纸上模拟一下样例好理解点= =
View Code
把k个单位的酒从一个村庄运送到相邻的村庄,需要耗费k个单位劳动力,问怎样运送酒使得耗费的劳动力最少
买 卖 买 卖 买
5 -4 1 -3 1
可以从样例来模拟,第一个村庄需要买5桶酒,这5桶酒都是从右边的别的村庄运过来的,第二个村庄需要卖4桶酒,
那么可以这样想,第一个和第二个村庄捆绑在一起的需求量为 a1+a2,而a1+a2又是从别的村庄运送过来的
再比如说
第一个村庄买的是5,那么需要5个劳动力运过来,
第二个村庄卖的是4,那么是它运过来的,
所以这一趟只满足了4桶酒,剩下的1继续累加,直到遇到负数把它抵消,说明又有酒运过来了
感觉是一个村庄一个村庄累积= =纸上模拟一下样例好理解点= =
#include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<stack> #include<vector> #include<map> #include<set> #include<queue> #include<algorithm> #define mod=1e9+7; using namespace std; typedef long long LL; int main(){ int n; while(cin>>n&&n){ LL ans=0,last=0,a; for(int i=0;i<n;i++){ cin>>a; ans+=abs(last); last+=a; printf("last=%d\n",last); } cout<<ans<<"\n"; } return 0; }
View Code
相关文章推荐
- UVA-11054 Wine trading in Gergovia(贪心)
- Wine trading in Gergovia UVA - 11054 贪心思维
- Uva 11054 Wine trading in Gergovia(贪心模拟)
- [贪心]UVA11054 Wine trading in Gergovia
- UVa 11054 Wine trading in Gergovia (贪心)
- UVA-11054-Wine trading in Gergovia(模拟+贪心)
- UVa11054 Wine trading in Gergovia(贪心+思路)
- uva - 11054 - Wine trading in Gergovia(贪心)
- UVa11054 poj2940 sdut2370 Wine trading in Gergovia(贪心)
- uva 11054 Wine trading in Gergovia(贪心)
- UVA 11054 Wine trading in Gergovia 葡萄酒交易 贪心+模拟
- UVA 11054 Wine trading in Gergovia(贪心)
- UVA 11054 Wine trading in Gergovia 葡萄酒交易 贪心+模拟
- uva 11054 Wine trading in Gergovia (贪心 + 模拟)
- UVa 11054/HDU 1489/POJ 2940 Wine trading in Gergovia(贪心&双向队列)
- uva 11054 - Wine trading in Gergovia
- UVa 11054 Wine trading in Gergovia(扫描)
- UVA_11054_Wine trading in Gergovia
- UVA 11054 - Wine trading in Gergovia
- Uva11054——Wine trading in Gergovia