为了验证 uuku 学习成果,bh1234666 给出一个长为 n 整数序列 a[i]。并让 uuku 给这个序列进行 M次操作。每次操作可以任意选择序列中一个数 a[i],令 a[i] 变成 a[i] * 2, a[i]+2,a[i]-2 ,a[i] / 2这四个结果中的一个。
bh1234666 希望 m 次操作后,整个序列的极差(最大值减最小值)最大。
显然 uuku 没有认真学习,所以他希望你来帮他回答这个问题。
请帮我解答一下这个编程题,关注回报
为了验证 uuku 学习成果,bh1234666 给出一个长为 n 整数序列 a[i]。并让 uuku 给这个序列进行 M次操作。每次操作可以任意选择序列中一个数 a[i],令 a[i] 变成 a[i] * 2, a[i]+2,a[i]-2 ,a[i] / 2这四个结果中的一个。
bh1234666 希望 m 次操作后,整个序列的极差(最大值减最小值)最大。
显然 uuku 没有认真学习,所以他希望你来帮他回答这个问题。
请帮我解答一下这个编程题,关注回报
这题是道简单的贪心。
我的思路是这样 : 首先对这个序列按升序排序, 在通过枚举一些序列进行计算, 我发现当 a[n] <= 4
时, 应先将其加 2, 再进行 M - 1
次的乘 2 操作; 当 a[n] > 4
时, 只要对 a[n] 进行 M
次的乘 2操作, 最后用 a[n] 减去 a[1]即可。如有不懂, 可以私信问我 .