求大佬解答一下
查看原帖
求大佬解答一下
437005
xiaoqi666楼主2023/1/1 14:11

小白,不是很明白,求大佬解答。 大佬,看代码注释。 求解答求求。


import java.util.Scanner;

public class Main {
	static int t,n,k;
	static int q[] = new int[100001];
	static boolean check(int x)
	{
	    if(x <= 0)return false; //这个地方如果改成 return true,题目最后一组数据就会错,为什么呢,求大佬解释
		int cnt = 0;
		int i = 1,now = q[0];
		while(i < n)
		{
			if(q[i] - now > x)
			{
				cnt ++;
				now += x;
			}
			else
			{
				now = q[i];
				++ i;
			}
		}
		//System.out.println(cnt);
		if(cnt <= k) return true;
		else return false;
	}
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		t = sc.nextInt();
		n = sc.nextInt();
		k = sc.nextInt();
		for(int i = 0;i < n;i ++) q[i] = sc.nextInt();
		int l = 0,r = t;
		while(l < r)
		{
			int mid = (l+r) / 2;
		//	System.out.println(l + " " + r + " " + mid);
			if(check(mid)) r = mid;
			else l = mid + 1;
		}
		System.out.println(l);
	}

}

2023/1/1 14:11
加载中...