牛客挑战赛39 - 聚会 题解

聚会

https://ac.nowcoder.com/acm/contest/5157/A

题意

一条数轴上有 个点,设两个传送门,可互相瞬间传送,求这 个点移动到原点最短时间。

算法(

二分答案,一个传送门必定设在原点,另一个传送门可覆盖 的区域,线性判定答案可行性。

代码

#include <cstdio>
#include <algorithm>

using namespace std;

int t, n, x[100000];
int l, r, mid;

bool check(int ans) {
  int pos = -2e9;
  for (int i = 0; i < n; ++i)
    if (pos == -2e9) {
      if (abs(x[i]) > ans) pos = x[i] + ans;
    } else {
      if (abs(x[i]) > ans && abs(x[i] - pos) > ans) return 0;
    }
  return 1;
}

int main() {
  scanf("%d", &t);
  while (t--) {
    scanf("%d", &n);
    for (int i = 0; i < n; ++i) scanf("%d", &x[i]);
    sort(x, x + n);
    l = 0;
    r = max(-x[0], x[n - 1]);
    while (l < r) {
      mid = (l + r) >> 1;
      if (check(mid))
        r = mid; else
        l = mid + 1;
    }
    printf("%d\n", l);
  }
  return 0;
}
全部评论

相关推荐

昨天 18:09
门头沟学院 Java
苍穹外卖和谷粒商城这俩是不是烂大街了,还能做吗?
想去重庆的鸽子在吐槽:你不如把这俩做完自己搞明白再优化点再来问 何必贩卖焦虑
点赞 评论 收藏
分享
湫湫湫不会java:1.在校经历全删了2.。这些荣誉其实也没啥用只能说,要的是好的开发者不是好好学生3.项目五六点就行了,一个亮点一俩行,xxx技术解决,xxx问题带来xxx提升。第一页学历不行,然后啥有价值的信息也没有,到第二页看到项目了,第一个项目九点,第二个项目像凑数的俩点。总体给人又臭又长,一起加油吧兄弟
点赞 评论 收藏
分享
05-16 11:16
已编辑
东华理工大学 Java
牛客73769814...:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
牛客创作赏金赛
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务