【锰锌求助】10pts
查看原帖
【锰锌求助】10pts
483928
Tsukinaga_Ichiyo楼主2021/9/20 11:35

样例都过不了,不知道是哪里出现了问题qq_emoji: kk

#include <bits/stdc++.h>
using namespace std;
int n, t[110], g[110], dp1[110], dp2[110], ans = 1e9;

int main() {
	ios::sync_with_stdio(false);
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> t[i];
	}

	memset(g, 0x3f, sizeof(g));
	for (int i = 1; i <= n; i++) {
		int cur = lower_bound(g + 1, g + n + 1, t[i]) - g;
		dp1[i] = cur;
		g[cur] = t[i];
	}//求最长上升子序列

	memset(g, 0x3f, sizeof(g));
	for (int i = 1; i <= n / 2; i++) {
		swap(t[i], t[n - i + 1]);
	}
	for (int i = 1; i <= n; i++) {
		int cur = lower_bound(g + 1, g + n + 1, t[i]) - g;
		dp2[i] = cur;
		g[cur] = t[i];
	}//求最长下降子序列

	for (int i = 1; i <= n; i++) {
		int num = dp1[i] + dp2[i] - 1;
		ans = min(ans, n - num);
	}

	cout << ans;
	return 0;
}
2021/9/20 11:35
加载中...