AC

黑暗中的那颗星为你而闪耀 · 发布于 2025-07-30 · 浏览 320 回复 0

#include <bits/stdc++.h> using namespace std;

define INF 0x3f3f3f3f

int dp[205];

int main() {

int n;
int a[205];
memset(dp, INF, sizeof(dp));
dp[1] = 0;
cin >> n;
for (int i = 1; i <= n; i++)
	cin >> a[i];
for (int i = 2; i <= n; i++) {
	if (a[i - 1] + 1 == a[i]) {
		dp[i] = dp[i - 1] + 1;
	}
	for (int j = 1; j < i; j++) {
		int k = 1;
		while ((1 << k) < a[i] - a[j])
			k++;
		dp[i] = min(dp[i], dp[j + k] + k + 1);
	}
}
if (dp[n] > 1e9)
	cout << -1;
else
	cout << dp[n];
return 0;

}

全部回复 共 0 条

还没有人回复。往下写第一条。

发表回复