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

题目描述

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

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

题目思路

其实这题求的就是移动之后点的右边界与左边界的差值

设两个点a,b分别为左边界与右边界

我们采用贪心的思想,对i与i+1去更新左右边界l,r

初始的ans=a[n]-a[1];//最大的距离

for(i=1,n-1)

l=min(a[1]+x,a[i+1]-x),r=max(a[n]-x,a[i]+x),ans=min(ans,r-l);

两个点向中心移动后的三种情况---x不同导致结果不同,其结果边界是不相同的

但是我们既然要求最小的距离差,那么我们就要每次更新都让l要为最大的,r要为最小的

我们每次的l都要对a[1]+x比较,r都要对a[n]-x比较-----l=a[1]+x,r=a[n]-x的这种情况对应的是图中的第二种情况

需要注意的是,我们对中心去移动,如果遇到图中第三种结果,中心移动算出的边界差结果是错的,所以我们在这初始化ans=a[n]-a[1]

我们对普遍情况都看作是第一种情况,更新采用的是第一种情况的更新

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){int n;ll a[55],l,r,x;cin>>n;  for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);cin>>x;ll ans=a[n]-a[1];//最大的距离for(int i=1;i<n;i++){l=min(a[i+1]-x,a[1]+x);r=max(a[i]+x,a[n]-x);ans=min(ans,r-l);}cout<<ans<<endl;
}

【牛客贪心】牛牛的朋友相关推荐

  1. 牛客 13134 牛牛的数列

    牛客 13134 牛牛的数列 题目链接 题目描述 牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的 ...

  2. 牛客网——牛牛的通勤

    帮朋友写个题解 目录 前言 一.牛牛的通勤 描述 输入描述: 输出描述: 总结 前言 最后一场雨停歇之后,我出发了.空气因为我的目光而发亮.秘密小径也露出了轮廓.树林静静地等候--他们听说过我和你的约 ...

  3. 刷题记录:牛客NC21841牛牛玩平板

    传送门:牛客 题目描述: 牛牛和牛妹喜欢玩平板游戏,游戏一开始屏幕上会出现很多个图形,玩家在每一轮可以合并两个图形,当只有一 个图形的时候游戏结束,每个图形都有一个大小,合并完成后的图形的大小为x+y ...

  4. 牛客21783 牛牛的星际旅行

    题目描述 在一个遥远的星球上,每周有N天,牛牛去了这个星球旅游,他恰好只带了N件不同的衣服,编号为1到N 每一天他会穿其中的某一件衣服,一周之内不能穿同一件衣服两次,而且假如某件衣服是在第x天穿的,那 ...

  5. 牛客网--牛牛的闹钟

    牛牛总是睡过头,所以他定了很多闹钟,只有在闹钟响的时候他才会醒过来并且决定起不起床.从他起床算起他需要X分钟到达教室,上课时间为当天的A时B分,请问他最晚可以什么时间起床 输入描述: 每个输入包含一个 ...

  6. 牛客网--牛牛找工作

    题目描述 为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬.牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作.在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作, ...

  7. 牛客网牛牛换瓷砖的编程题

    牛牛喜欢彩色的东西,尤其是彩色的瓷砖.牛牛的房间内铺有L块正方形瓷砖.每块砖的颜色有四种可能:红.绿.蓝.黄.给定一个字符串S, 如果S的第i个字符是'R', 'G', 'B'或'Y',那么第i块瓷砖 ...

  8. 智力大冲浪 (牛客贪心)

    https://ac.nowcoder.com/acm/contest/950/E 题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参 ...

  9. 牛客网 牛牛数括号(DP)

    题目连接 题意 题干已经说的很清楚 给你两个括号序列,不保证合法,求有多少种不同的方法可以将两个括号序列合并成一个合法的括号序列 合并的时候不能改变各自序列原先的顺序 思路 dp[i][j] 表示s1 ...

最新文章

  1. 《大道至简》一书第三版,与编辑就本书写作风格的讨论
  2. 无盘中用户数据的保存
  3. Lock与synchronized 的区别
  4. Spring加载流程源码
  5. asp mysql insert_用asp把表单数据插入数据库的2种常用方法
  6. 编译调试 .NET Core 5.0 Preview 并分析 Span 的实现原理
  7. ubtunu打开firefox_ubuntu中火狐浏览器问题(也许是)
  8. 打开wmware没反应_没呼吸没脉搏,溺水女孩危在旦夕!预产期只差9天的她挺着大肚子出手相助...
  9. 31 MM配置-采购-采购申请-采购申请审批策略-定义审批过程
  10. 进入云原生、分布式的时代,什么才是数据库的正确打开方式
  11. C语言的printf一些骚操作
  12. PostgreSQL(1)数据库安装(win和linux)
  13. mysql怎么设置角色_mysql 用户角色权限表建立
  14. Android 多语言对照表
  15. apple ID 注册 此时无法创建您的账户
  16. Windows NT
  17. python将两张图片拼接成一张图_Python将两张图片拼接到一起 - 小众知识
  18. stm32L0系统----开发环境搭建
  19. 打飞机游戏(Appinventor练习)
  20. 论述rfid与物联网关系

热门文章

  1. 管理之困:消逝的工作热情
  2. Js中Date日期输出不同结果(格式)(加一天,加一个月,获取0时0分0秒,23时59分59秒等)
  3. WordPress 主题开发:从入门到精通(必读)
  4. 前端,一种GUI软件
  5. gltf-pipeline压缩gltf与加载教程
  6. Android Support v4\v7\v13和AndroidX的区别及应用场景
  7. Gscoolink GSV5100 HDMI网线延长器 HDMI2.0芯片 70M延长芯片
  8. nvme分区选mbr还是guid_设置UEFI+GPT分区安装win10教程
  9. 7.29:正睿集训(人工智能峰会)day2
  10. 虚拟机服务器警报设置,Veeam ONE