已过,但问个问题,玄关
查看原帖
已过,但问个问题,玄关
661984
Stone_Xz楼主2024/10/15 21:11

以下代码会 TLE,但是开了 long long 就 AC 了,为什么不开 long long 会导致 TLE?

玄 2 关

#include<bits/stdc++.h>
using namespace std;
 
const int N = 2005;
 
int n, k, dp[N], a[N];
 
bool check(int x)
{
	for(int i = 1; i <= n; i++)
		dp[i] = i - 1;
	for(int i = 1; i <= n; i++)
		for(int j = 1; j < i; j++)
		{
			if(abs(a[i] - a[j]) <= (i - j) * x)
				dp[i] = min(dp[i], dp[j] + i - j - 1);
		}
	for(int i = 1; i <= n; i++)
		if(n - i + dp[i] <= k) return true;
	return false;
}
 
int main()
{
	cin.tie(0) -> sync_with_stdio(0);
	cin >> n >> k;
	for(int i = 1; i <= n; i++)
		cin >> a[i];
	int lt = -1, rt = 2e9 + 1;
	while(lt + 1 < rt)
	{
		int mid = lt + rt >> 1;
		if(check(mid)) rt = mid;
		else lt = mid;
	}
	cout << rt;
	return 0;
}

2024/10/15 21:11
加载中...