(题目传送门)

题目描述(此处简化了亿点点)

给出一个长为n的整数序列,并给这个序列进行m次操作,每次操作可以任意选择序列中一个数 ,令变成这四个结果中的一个。最终希望m次操作后整个序列的极差最大。

输入格式

第一行两个整数n,m

第二行n个整数,表示序列 

输出格式

共一行

一个整数,表示最大的极差

输入输出样例

输入

3 2
0 1 0

输出

6

数据范围

对于100%的数据,1<n<,0<m<11,0<<

以上是题目部分;以下是题解部分:

设当前的最大值为mx,最小值为mn。为了让极差变大,我们显然是只操作这两个数。并且一定是让mx变大,mn变小。所以我们只可能进行这四个操作:

1.

2.

3.

4.

下面我们就来考虑那种操作对答案的贡献更大:设一次操作对答案的贡献。那么这四种操作的贡献分别为:

1.

2.

3.

4.

显然有。所以不可能进行。也就意味着如果我们改变最小值,每次操作最多将答案+2。而如果改变最大值,每次操作至少可以让答案+2。所以我们只要操作最大值就可以了。下面我们考虑如何选取操作。不难发现,当 mx>2时,进行操作更优。当 mx=2时,两种操作效果一样。当mx<2时,进行操作更优。并且当进行一次操作后必然有mx>1。所以我们只需要记录初始序列的最大值和最小值,如果最大值小于2,就先将其+2,然后不断的对最大值进行*2操作即可。

C语言:

#include<stdio.h>
long long n,m,x,maxx=0,minx=1e9;
int main() {scanf("%lld %lld",n,m);for(long long i=0;i<n;i++) {scanf("%lld",x);if(x>maxx) {maxx=x;}if(x<minx) {minx=x;}}if(maxx<2) {maxx+=2;m--;}printf("%lld",((1ll*maxx)<<m)-minx);return 0;
}

C++:

#include<iostream>
using namespace std;
long long n,m,x,maxx=0,minx=1e9;
int main() {cin>>n>>m;for(long long i=0;i<n;i++) {cin>>x;if(x>maxx) {maxx=x;}if(x<minx) {minx=x;}}if(maxx<2) {maxx+=2;m--;}cout<<((1ll*maxx)<<m)-minx;return 0;
}

洛古题解之P8480相关推荐

  1. 洛古最简单50题解(1-10)

    做为一名新手,首先要过一过题,找找成就感.(大佬略过).下面附上洛古最简单50题(大佬略过).以及最麻烦 AC代码,至少AC了. 目录·列表: 洛古最简单50题解(1-10) 洛古最简单50题解(11 ...

  2. 洛古最简单50题解(41-50)

    做为一名新手,首先要过一过题,找找成就感.(大佬略过).下面附上洛古最简单50题(大佬略过).以及最麻烦 AC代码,至少AC了. 目录·列表: 洛古最简单50题解(1-10) 洛古最简单50题解(11 ...

  3. 洛古最简单50题解(21-30)

    做为一名新手,首先要过一过题,找找成就感.(大佬略过).下面附上洛古最简单50题(大佬略过).以及最麻烦 AC代码,至少AC了. 目录·列表: 洛古最简单50题解(1-10) 洛古最简单50题解(11 ...

  4. 洛古最简单50题解(31-40)

    做为一名新手,首先要过一过题,找找成就感.(大佬略过).下面附上洛古最简单50题(大佬略过).以及最麻烦 AC代码,至少AC了. 目录·列表: 洛古最简单50题解(1-10) 洛古最简单50题解(11 ...

  5. 洛古最简单50题解(11-20)

    做为一名新手,首先要过一过题,找找成就感.(大佬略过).下面附上洛古最简单50题(大佬略过).以及最麻烦 AC代码,至少AC了. 目录·列表: 洛古最简单50题解(1-10) 洛古最简单50题解(11 ...

  6. 洛古P2196 题解 兼本人第一篇题解

    本人第一篇正式题解! 本题的主要思路: ①求挖地雷的最多个数. ②输出最多地雷的挖掘方法. 明确思路后代码实现 数据范围 n<=20 所以我们完全可以跑n遍DFS 求出其中的可以一次性挖的最多地 ...

  7. P1217 [USACO1.5]回文质数 Prime Palindromes 题解(来源:洛古)

    [USACO1.5]回文质数 Prime Palindromes 题目描述 因为 151 151 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 151 151 是回 ...

  8. 洛古 P1774 最接近神的人

    置顶题解 P1908 [逆序对] - zhylj 的博客 - 洛谷博客​​​​​​ 链接里有过程图,但题解里的题大小顺序和本题是相反的,但问题不大 题目描述 破解了符文之语,小FF开启了通往地下的道路 ...

  9. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

最新文章

  1. Ant Design离线使用Icon图标资源
  2. Node.js 入门教程 (三):API-准备知识
  3. 反卷积在神经网络可视化上的成功应用
  4. 配置 docker0 网桥
  5. LeetCode-14 最长公共前缀
  6. python(26)查看文件的大小
  7. python的魔法方法
  8. 企业数据治理及在美团的最佳实践
  9. Flutter 实现 仿Android原生启动模式SingleTask
  10. 结构方程模型(SEM)理论篇 (SEM 1)
  11. 内边距怎么设置html,如何设置内边距
  12. YYC采集工具python语言精简方便实用的视频采集工具
  13. 1039:判断数正负(测试已通过)
  14. IPFS技术系列之IPFS底层基础
  15. 5个步骤做好会议复盘工作
  16. QT程序图标不能显示解决
  17. ROS(indigo) turtlebot2 + android一些有趣应用
  18. Python生成图片到visio的矢量图
  19. 珍藏的Android电子书
  20. 【深度学习】实验5布置:滴滴出行-交通场景目标检测

热门文章

  1. Java微信公众号开发之创建带参数二维码
  2. java while 乘法表_java while循环 99乘法表
  3. 读代码读的什么代码_您的代码应读得像书
  4. rar压缩工具在lunix下安装和使用
  5. 高中教资信息技术Flash动画软件分享
  6. 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除
  7. python用钉钉发四要素信息
  8. 使用云数据库,国庆快速开发一个微信小程序
  9. Android实战简易教程-第三十六枪(监听短信-实现短信验证码自动填入)
  10. CentOS忘记root密码,重置