Gergovia的酒交易B805(移动纸牌)


试题描述

直线上有 n 个等距的村庄,每个村庄要么买酒,要么卖酒。设第 i 个村庄对酒的需求为 ai (-1000<=ai<=1000),其中ai>0表示买酒,ai<0表示卖酒。所有村庄供需平衡,即所有 ai 之和等于0。把 k 个单位的酒从一个村庄运到相邻村庄需要 k 个单位的劳动力。计算最少需要多少劳动力可以满足所有村庄的需求。输出保证在 64 位带符号整数的范围内。


输入

若干组数据,每组数据为两行。
对于每组数据,第一行有一个整数N,表示有N个酒窖,第二行有N个整数,从a1,a2一直到an。
输入的最后以0结尾。

输出

每组数据一行,每行一个整数,表示总费用。

输入示例

10
3 -1 -2 9 -4 -1 -7 9 -7 1
5
1000 -1000 1000 0 -1000
0

输出示例

33
3000

其他说明

数据范围:2 <= n <= 100 000
 

大概的思路:从最左边的往右推。因为线性村庄中最左边的酒一定要往右边运。所以,把当前走过的村庄的绝对值加起来,再加上当前村庄的(可以是负数),即为简单算法。具体见代码。

 1 #include <iostream>
 2 #include <cmath>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <cstdlib>
 6 #include <algorithm>
 7 using namespace std;
 8 int a[1010101];
 9 int main()
10 {
11     int n;
12     while(cin>>n)
13     {
14         if(n==0) break;
15         for(int i=1;i<=n;i++) scanf("%d",&a[i]);
16         int m=a[1],ans=0;
17         for(int i=2;i<=n;i++)
18         {
19             ans+=abs(m);
20             m+=a[i];
21         }
22         printf("%d\n",ans);
23     }
24     //system("pause");
25     return 0;
26 }

Gergovia的酒交易B805

时间: 2024-08-08 05:24:39

Gergovia的酒交易B805(移动纸牌)的相关文章

UVa 11054 Gergovia的酒交易

https://vjudge.net/problem/UVA-11054 题意:直线上有n个等距的村庄,每个村庄要么买酒,要么卖酒.设第i个村庄对酒的需求为ai,ai>0表示买酒,ai<0表示卖酒,所有村庄供需平衡.把k个单位的酒从一个村庄运到相邻村庄需要k个单位的劳动力.计算所需最少劳动力. 思路:从左边第一个开始分析,如果它卖酒,则可以把它全卖给第二个村庄,如果它买酒,可以从第二个村庄那里买酒,依次下去分析第二个直到最后一个村庄.这样的话每次买酒和卖酒的距离都是最短的,劳动力肯定也是最少的

UVA - 11054 Wine trading in Gergovia (Gergovia 的酒交易)(贪心+模拟)

题意:直线上有n(2<=n<=100000)个等距的村庄,每个村庄要么买酒,要么卖酒.设第i个村庄对酒的需求为ai(-1000<=ai<=1000),其中ai>0表示买酒,ai<0表示卖酒.所有村庄供需平衡,即所有ai之和等于0.把k个单位的酒从一个村庄运到相邻村庄需要k个单位的劳动力.计算最少需要多少劳动力可以满足所有村庄的需求. 分析:从最左面的村庄考虑,不管他是买酒还是卖酒,相对于他的相邻村庄都会有a0的运输量,所以运输量不断累加或抵消,一直算到最右边村庄即可.

UVA 11054 Gergovia的酒交易 Wine trading in Gergovia

一道思维题,主要用到的方法是思路转化. 首先考虑第一个村庄,首先他本身一定会用|a[1]|的劳动力 a[1]>0 那么2村庄一定要花a[1]的劳动力来运输,也就是需要a[1]+a[2]的劳动力 a[1]<0 那么2村庄就已经有-a[1]瓶酒,就可以不用去买了,也就是a[2]-(-a[1])=a[1]+a[2] 综上,我们通过扫描法来记录前几个村庄带给这个村庄的酒,累加劳动力就好了 #include<bits/stdc++.h> using namespace std; int n;

uva 11054 Gerovia的酒交易(贪心+树状数组)

直线上有n个等距的村庄,每个村庄要么买酒,要么卖酒.把k个单位的酒从一个村庄运到相邻村庄需要k个单位的劳动力.问最少需要多少劳动力才能满足所有村庄的需求 思路贪心 #include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include<iostream> #include<algorithm> #include<vector> #inclu

问军场党示听就取儿

但是级别却只有级而已不过这已经足以傲视群雄了因为我的等级已经一下子窜到了中国排名的第位只要再努力一把完全可以在等级榜上崭露头角了顿时傲世狂风和傲世狂剑两个大惊失色注已经全部被吸引了过去不客气就不客气谁怕谁啊但是这一切也只是为了杀最后的而清理路障而已那个食人魔首领才是我们真正此行的目的嗯出去吃夜宵吧秦韵亲手做的 而骷髅王仿佛被侮辱了一般立刻怒吼着冲向龙魂龙魂在惊魂落魄的大叫兄弟们救命呐 操有种亮出来少吓唬人了老子是吓大的当然你以为我那么容易就能对付过去切想得美嗯随你们我都可以冲天炎龙的火光之中七星

uva--11054Wine trading in Gergovia +贪心

题意: 一条街上所有人都以卖酒为生,每一天有的人需要卖掉一些酒而有的人需要买入一些酒;然后在相邻的人之间运输一单位的酒需要一单位的花费,问怎么样安排人们之间的交易,可以使得总运算费用最小. 思路: 开始就想到一个贪心思路:显然每个需要买酒的人都应该尽量买他最左边卖的酒,没有的话再买他右边最近卖酒人的酒.第二点很好理解,现在来解释一下第一点:如果当前这个人不买他最左边人卖的酒而那些酒反正都是要卖出去的,这些酒就要由他右边的人买,那么这些酒卖出的代价就必然变大. 具体实现时我们需要判断每个人的左边是

【转】幻想传说:全技能奥义、料理、物品、称号、交易品 获得条件(图文)

    全特技习得条件 クレス的必杀技 名称   习得条件 魔神剑 LV 2 飞燕连脚 LV 5 袭爪雷斩 LV 9 秋沙雨 LV 12 虎牙破斩 LV 15 柔招来 LV 20 凤凰天驱 LV 23 守护方阵 LV 27 真空破斩 LV 31 集气法 LV 34 狮子战吼 LV 37 刚招来 LV 41 闪空裂破 LV 45 红莲剑 LV 50 次元斩 冰之剑入手时 虚空苍破斩 炎之剑入手时 空间翔转移 时间之剑入手时 杀剧舞荒剑 LV 99以上时装备S•D剑升1级,使用方法:必杀发出后先一直

从假洋河酒事件看 电商监督制度缺失

最近一瓶10元廉价酒变成400元洋河天之蓝事件,因各大主流新闻报道而被坊间热议.事件中,检察院人员发现整个事件中,物流环节存在巨大漏洞,长期利用物流冒以配件.家电之名将大量假酒发向全国的行为背后,是拆包检查的自律公约的失效. 同样的行为,也发生在如今野蛮生长的微商.电商中.由于在具体的运营环节相应监管体制的匮乏,大量涌入电商市场的假货通过这个巨大的销售网络向全国兜售.虽也有自律公约,但单纯依靠自律形成可靠监督的行为却在屡次假酒假货事件中被暴露出问题.  问题一:国内多数电商没有独立商检部门 电商

前海天府酒交所

"前海云交易"融合了"互联网+"的概念,实现了移动互联网与传统PC交易的全覆盖.完美结合了移动互联网的便利性,让交易像玩微信一样方便简单,随时随地都能交易,真正做到你在哪,交易就在哪! 云交易只需看对涨跌方向,无需考虑涨跌幅度,系统预先设定77%-87%的收益. 例如:目前拉菲干红葡萄酒价格为1000,一分钟后价格是涨或跌 --预测正确获得77%的收益. 前海云酒交所的所有交易商.会员的资金全部由银联三方进行资金托管,由第三方统一保管所有交易资金,从而保证交易商资金