港口——差分与贪心 C++

这篇博客介绍了如何使用差分和贪心策略解决一个关于港口货物重量平衡的问题。通过分析当货物堆数量为2和3的情况,得出利用差分数组求解最小操作次数的方法。博客还提醒注意在处理差分数组时的细节,并提供了一道相关的USACO竞赛题目以加深理解。

港口——差分与贪心

题目描述

港口有nnn堆货物,他们的重量分别为w1,w2,⋯ ,wnw_1,w_2,\cdots,w_nw1,w2,,wn​,每堆货物的重量不一定相同。
吊车师傅每次操作可以使任意第lll堆到第rrr堆的货物都增加一个重量或者减少一个单位重量。请问吊车师傅最少需要执行几次操作可以使nnn堆货物重量都相同。

输入格式

第一行输入正整数nnn
第二行输入nnn个整数,第iii个整数表示wiw_iwi

输出格式

共一行,输出最少操作次数。

输入样例

5
0 1 1 1 0

输出样例

1

数据规模

对于100%100\%100%的数据,1≤n≤1000001 \leq n \leq 1000001n1000000≤wi≤1090 \leq w_i \leq 10^90wi109

题目解答

我相信已经有很多大佬看出这是一道差分板子题,但我们这些蒟蒻现在肯定是无从下手。那我们就从简单的开始,先假设n=2n=2n=2

  • 可以发现,答案就是如图灰色部分,也就是∣w1−w2∣|w_1-w_2|w1w2。那如果n=3n=3n=3呢?
  • 如果www数组是单调的,那么结果就是∣w1−w2∣+∣w2−w3∣|w_1-w_2|+|w_2-w_3|
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值