#6不过,求调
查看原帖
#6不过,求调
540615
dongyc0301楼主2022/8/5 16:17
#include <stdc++.h>
using namespace std;
long long n,k,a[2005],dp[2005];
bool check(long long sum)
{
	long long ans=0,i,j;
	memset(dp,0,sizeof(dp));
  	dp[1]=1;
	for(i=2;i<=n;i++)
		for(j=1;j<i;j++)
			if(abs(a[i]-a[j])<=sum*(i-j))
				dp[i]=max(dp[i],dp[j]+1);
	for(i=1;i<=n;i++)
		if(n-dp[i]<=k)
			return 1;
	return 0;
} 
int main()
{
	long long i,j,maxn=-(int)1e9-1,minn=(int)1e9+1;
	cin>>n>>k;
	for(i=1;i<=n;i++) cin>>a[i],minn=min(minn,a[i]),maxn=max(maxn,a[i]);
	long long l=0,r=max(maxn-minn,maxn);
	while(l<r)
	{
		long long mid=l+r >> 1;
		if(check(mid)) r=mid;
		else l=mid+1;
	}
	cout<<l<<endl;
	return 0;
}
2022/8/5 16:17
加载中...