附加点没过,求调
查看原帖
附加点没过,求调
1576696
KatsuraJiu楼主2025/2/5 00:50
#include <stdio.h>

int func(int f[],int x,int n);

int main()
{
	int len,num,add;
	int i;
	int x;
	int f[100005]={0};
	int l,m,r;
	int ans;
	int M;
	
	scanf("%d %d %d",&len,&num,&add);
	
	for(i=0;i<num;i++){
		scanf("%d",&x);
		f[i]=x;
	}
	
	l=0;
	r=len;
	
	while(l<=r){
		m=l+(r-l)/2;
		M=func(f,m,num);
		if(M>add){
			l=m+1;
		}else{
			ans=m;
			r=m-1;
		}
	}
	
	printf("%d",ans);
	
	return 0; 
}

int func(int f[],int x,int n)
{
	int i;
	double h=2;
	double res;
	int ans=0;
	int dis=0;
	int s;
	
	for(i=0;i+1<n;i++){
		s=f[i];
		dis=f[i+1]-s;
		if(dis>x){
			res=dis/h;
			if(res<x){
				ans++;
			}else{
				while(h<dis){
					res=dis/h;
					if(res<=x){
						ans=ans+h-1;
						h=2;
						break;
					}else{
						h++;
					}
				}
			}
		}
	}
	
	return ans;
}
2025/2/5 00:50
加载中...