标题:贪心算法–区间问题

链接:https://ac.nowcoder.com/acm/problem/21545
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 32768K,其他语言65536K

64bit IO Format: %lld

题目描述

牛牛有一群牛友,每只小牛都站在坐标轴上的某个位置,这群牛友很听牛牛的话,每当牛牛做个手势,每只小牛都会移动恰好X个单位的距离,要么向左,要么向右

现在告诉你每只小牛在移动前的位置,求移动之后最左边的牛与最右边的牛的最小距离

输入描述:
第一行输入一个整数n (1 ≤ n ≤ 50),表示牛的数量
第二行输入n个数pi (-1e8 ≤ pi ≤ 1e8),表示每只牛的位置
第三行输入一个整数X (0 ≤ X ≤ 1e8)
输出描述:
输出一个整数
示例1

输入

3
-3 0 1
3

输出:

3

题目链接:牛牛的朋友
题目思路:
先排序,sort函数
找左右边界,两者之差就是距离
有四种情况:
1.都往右移动之间距离不变,不可行
2.都往左移动之间距离不变,不可行
3.i往右移动,i+1往左移动,可行
4.i往左移动,i+1往右移动,不可行
求最短距离,然后更新ans

对红色的点枚举,左边界的更新是a[i+1]-x和第一个数往右a[1]+x的最小值因为左边所有的值往右,右边所有的值往左,因此左边往右后的值都比第一个往右大,右边所有的值往左都比a[i+1]-x大,因此a[i+1]-x和第一个数往右a[1]+x的最小值就是新的左边界,同理右边界也可推出,不断枚举所有的红点找出最小的N那个。
初始化ans=a[n]-a[1]的原因:
下面图片的第三种情况

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
ll  n,a[50],x,lf,ri,ans=0;
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}cin>>x;sort(a+1,a+n+1);ans=a[n]-a[1];//初始化为 a[n]-a[1],原因是有一种情况可能为原边界差值就是最小值 for(int i=1;i<n;i++){lf=min(a[1]+x,a[i+1]-x);//l初始化为a[1]+x,求最大的左边界,a[i+1]-x是从2到n的所有可能是左边界的值 ri=max(a[n]-x,a[i]+x);//r初始化为a[n]-x,求最小的右边界值,a[i]+x是从1到n-1中可能是右边界的值 ans=min(ans,ri-lf);//更新结果 }cout<<ans;return 0;
}

贪心训练题库:
贪心专题

贪心算法--牛牛的朋友相关推荐

  1. 【牛客贪心】牛牛的朋友

    链接:https://ac.nowcoder.com/acm/problem/21545 来源:牛客网 题目描述 牛牛有一群牛友,每只小牛都站在坐标轴上的某个位置,这群牛友很听牛牛的话,每当牛牛做个手 ...

  2. 玩转算法之面试第十章-贪心算法

    leetcode 455 分配饼干 尝试将最大的饼干给最贪心的朋友 如果满足,则+1 如果不满足,则将最大的饼干给次贪心的朋友,一次类推 试图让最多的小朋友开心 在这里插入代码片 #include&l ...

  3. 双“11”搞促销?用贪心算法来盘他!

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 这几年商家为了刺激消费是变着花样的推出各种各样的活动,以某多多为首的运营式电商更是 ...

  4. 双“11”搞促销?用贪心算法盘它

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 头图 |  CSDN 下载自东方IC 这几年商家为了刺激消费是变着花样的推出各种各样的活动,以某多多为首的运营式电商更是让我们看 ...

  5. leetcode 贪心_leetcode题解(贪心算法)

    定义 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择. 也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解. 通常贪心算法的代码会非常短而且思路也非常 ...

  6. java调度问题的贪心算法_贪心算法——换酒问题

    知识回顾 贪心算法 (greedy algorithm),又称贪婪算法. 是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法. 贪心算法在 有最优子 ...

  7. 厉害了,学霸利用贪心算法找偷车贼

    转载自:公众号[超级数学建模] 作者:超模君 惹谁 都不要惹会算法的人 今天要讲的故事的主人公,是来自圣母大学计算机系的副教授史戈宇.就在不久之前,他还经历了一场惊心动魄的劫车事件. 度假旅游遇劫匪 ...

  8. 数据结构与算法学习⑤(BFS和DFS 贪心算法 二分查找)

    数据结构与算法学习⑤ 数据结构与算法学习⑤ 1.BFS和DFS 1.1.深度优先搜索算法 1.2.广度优先搜索算法 面试实战 102. 二叉树的层序遍历 104. 二叉树的最大深度 515. 在每个树 ...

  9. 清华毕业计算机教授遭持枪劫车!靠“贪心算法”追回秒杀美国警察

      新智元报道   来源:史弋宇 编辑:张乾 [新智元导读]不久前,圣母大学计算机系终身副教授一家人遭两名劫匪抢去汽车,在不到24小时之内,这名教授和博士生二人通过手机发动应用程序和计算机算法中的&q ...

最新文章

  1. 解决Ubuntu系统下git clone下载速度较慢的问题(亲测有效)
  2. ubuntu 14.0 下github 配置
  3. Scala Akka的Actor模型
  4. Java基础之String深入解析
  5. ubuntu+ngrok内网穿透+Flask部署以及frp稍微提一下
  6. 【BZOJ 3831】【Poi2014】Little Bird(单调队列优化dp)
  7. 当DIV中的内容超过 div的宽度的时候
  8. poj 1389 Area of Simple Polygons 线段树扫面线,和1151一样的嘛
  9. 一流的设计师,一流的PHOTOSHOP教程.....
  10. photo player 显示 ☞ 列表选中项的处理
  11. dev gridcontrol 单箱效果
  12. 嵌入式linux应用开发完全手册(一)
  13. 3种方法解除RAR压缩文件的密码保护
  14. Redis 与 MySQL 数据一致性问题
  15. linux可以用tab键,linux下tab键在命令行情况下的强大
  16. tensorflow学习笔记——获取训练数据集和测试数据集
  17. 腾讯开源开门红,云原生操作系统TencentOS Kernel正式登陆Github
  18. ESP32和LoRa SX1278通讯
  19. java fmail发送邮件_【已实测通过】JavaMail常用的几种邮件发送方式
  20. C/C++数组初始化

热门文章

  1. spring-security学习(七)——QQ登录(上篇)
  2. c语言会出现fullgc,Full GC 的一些常见原因
  3. 鸟群从他身上钻过的那人
  4. 每天更新的纯净版 Chromium OS 镜像已经可以下载
  5. Hive on Spark VS Spark on Hive
  6. CentOS系统SSH无法连接
  7. 中班音乐活动 机器人_中班音乐活动 : 摘果子
  8. iOS 十进制转换成十六进制
  9. CF626E Simple Skewness
  10. Java最好用软件——idea安装教程