AC

名字不要取太长像我这样应该刚刚好  •  16天前


#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;

}


评论:

请先登录,才能进行评论