二分搜索合法函数 求助qwq
  • 板块题目总版
  • 楼主whichgugu
  • 当前回复4
  • 已保存回复4
  • 发布时间2025/1/19 19:36
  • 上次更新2025/1/19 22:12:23
查看原帖
二分搜索合法函数 求助qwq
1601864
whichgugu楼主2025/1/19 19:36

教室里面原来有 n张桌子,而参加考试的同学只有 m 个,所以肖恩可以去掉 n−m 张桌子。为了最大可能的防止同学们作弊,肖恩想去掉一些桌子后剩下的相邻桌子之间的最小距离最大。现在肖恩把这个问题交给你,请你求出这个可能的最大的最小距离是多少(注意第一张桌子和最后一张桌子与墙的距离也算作一个距离,墙位于教室的两侧,下标分别为 0和教室的大小k),输出一个数字表示可能的最大的最小距离。 第一行输入三个数字k,n和m ,分别表示教室的长度,桌子的数量和参加考试的同学的数量 第二行包括n个整数,第i个数字ai表示第i张桌子的位置。其中保证所有桌子的位置坐标一定都是按从小到大的顺序给出的。

k,n,m=map(int,input().split()) a=list(map(int,input().split()))

def check(x): last_place,tot = 0,0 for i in range(n): if a[i] - last_place >= x: last_place = a[i] else: tot += 1 if k - last_place < x: tot += 1 if tot <= n - m: return True

left,right =1,k ans = 1 while left <= right: mid = (left + right) // 2 if check(mid): ans = mid left = mid + 1 else: right = mid - 1 print(ans)

2025/1/19 19:36
加载中...