UVa 11054 - Wine trading in Gergovia
2017-06-15 09:40
411 查看
题目:有一些等距排列在一条直线上的酒店,他们之间互相运送酒,供求相符,
每次运送以箱酒的代价为两家店的距离,求满足供求关系的总运送代价最小值。
分析:贪心。可以采用需求或提供的量求解,这里使用需求量求解。
如果正数和负数分别在两端,那么无论怎么对应总代价相同;
(如:-a, -b, a b,可以变成0, -b, 0, b或0, -b, a, b-a,假设a<b,代价都是2a+2b)
如果交替分成块,只要不交叉运送酒和上面形同,即分成子段,每段为正负分离;
(如果交叉运送,会出现额外代价,增加总代价)
这里利用need记录前部分子段的总需求,如果need为正,说明需要后面补给;
如果need为负数,说明供过于求,这时直接向后面的子部分移动。
说明:感觉说都不会话了:-(。
#include <stdio.h>
#include <stdlib.h>
int inhabitants[100001];
int main()
{
int n;
while (~scanf("%d",&n) && n) {
for (int i = 0; i < n; ++ i) {
scanf("%d",&inhabitants[i]);
}
long long need = 0LL, ans = 0LL;
for (int i = 0; i < n; ++ i) {
if (need < 0) {
ans -= need;
}else {
ans += need;
}
need -= inhabitants[i];
}
printf("%lld\n",ans);
}
return 0;
}
每次运送以箱酒的代价为两家店的距离,求满足供求关系的总运送代价最小值。
分析:贪心。可以采用需求或提供的量求解,这里使用需求量求解。
如果正数和负数分别在两端,那么无论怎么对应总代价相同;
(如:-a, -b, a b,可以变成0, -b, 0, b或0, -b, a, b-a,假设a<b,代价都是2a+2b)
如果交替分成块,只要不交叉运送酒和上面形同,即分成子段,每段为正负分离;
(如果交叉运送,会出现额外代价,增加总代价)
这里利用need记录前部分子段的总需求,如果need为正,说明需要后面补给;
如果need为负数,说明供过于求,这时直接向后面的子部分移动。
说明:感觉说都不会话了:-(。
#include <stdio.h>
#include <stdlib.h>
int inhabitants[100001];
int main()
{
int n;
while (~scanf("%d",&n) && n) {
for (int i = 0; i < n; ++ i) {
scanf("%d",&inhabitants[i]);
}
long long need = 0LL, ans = 0LL;
for (int i = 0; i < n; ++ i) {
if (need < 0) {
ans -= need;
}else {
ans += need;
}
need -= inhabitants[i];
}
printf("%lld\n",ans);
}
return 0;
}
相关文章推荐
- 例题8-5 Gergovia的酒交易(Wine trading in Gergovia, UVa 11054)
- uva 11054 Wine trading in Gergovia
- 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
- UVa 11054 - Wine trading in Gergovia
- uva 11054 Wine trading in Gergovia
- (白书训练计划)UVa 11054 Wine trading in Gergovia(等价转换)
- UVa 11054 - Wine trading in Gergovia
- Wine trading in Gergovia UVA - 11054
- 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
- 【例题 8-5 UVA - 11054】Wine trading in Gergovia
- UVA 11054 Wine trading in Gergovia