社区讨论

wa#2#10,求助,感谢

P3853[TJOI2007] 路标设置参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@m2u9sia1
此快照首次捕获于
2024/10/29 17:53
去年
此快照最后确认于
2025/11/04 15:44
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int a[10000005], cha[10000005];
int ll,n,k,maxh;
bool judge(int x) {
	int num = k;
	for(int i = 1; i <= n+1; i++) {
		if(num < 0) return 0;
		if(cha[i] <= x) continue;
		int coun = cha[i]/x;
		if(cha[i] % x == 0) num -= coun+1;
		else num -= coun;
		//num -= coun;
	}
	return 1;
}
int main() {
	scanf("%d%d%d", &ll, &n, &k);
	for(int i = 1; i <= n; i++) {
		scanf("%d", &a[i]);
		if(i == 1) cha[i] = a[i];
		else cha[i] = a[i]-a[i-1];
		if(cha[i] > maxh) maxh = cha[i];
	}
	cha[n+1] = ll-a[n];
	int l = 1, r = maxh, mid = (l+r)/2;
	while(l < r) {
		bool flag = judge(mid);
		if(flag) {
			r = mid;mid = (l+r)/2;
		}
		else {
			l = mid+1; mid = (l+r)/2;
		}
	}
	printf("%d", l);
	return 0;
	
}

回复

4 条回复,欢迎继续交流。

正在加载回复...