本地HACK数据是对的,提交后出错,求助
查看原帖
本地HACK数据是对的,提交后出错,求助
220509
国国の国王楼主2022/10/4 20:07

//思路:L在10^9内,运用二分,,二分后遍历穷举,复杂的O(nlgn) 
#include<bits/stdc++.h>
using namespace std; 
int L,N,M;
int dis[100001],pla[100001];
bool Jud(int mnl){
	int s=0,us=0;
	for(int i=1;i<=N;i++){
		s+=dis[i];
		if(s<mnl) us++;
		else s=0;
		if(us>M) return false;
	}
	return true;
}

int main(){
	scanf("%d%d%d",&L,&N,&M);//	L是距离,N是石头个数,M是移走岩石数. 
	for(int i=1;i<=N;++i){
		scanf("%d",&pla[i]);
		dis[i]=pla[i]-pla[i-1];//处理数据,将位置转化为距离 
	}
	dis[++N]=L-pla[N-1];
	int l=1,r=L,mid=(l+r)/2;
	while(l<r){
		if(Jud(mid)) l=mid;
		else r=mid-1;
		mid=(l+r)/2+1;
	}
	printf("%d\n",l);
}

8 3 1 2 4 7 本地输出2

2022/10/4 20:07
加载中...