wa了两个点
查看原帖
wa了两个点
1255092
xinqiji114514楼主2024/3/3 21:04
#include <bits/stdc++.h>
using namespace std;
const int N = 115;
int a[N];
int n;
int p[N], q[N];
int f[N];

int main() {
	scanf("%d", &n);

	for (int i = 1; i <= n; i++) {
		scanf("%d", &a[i]);
		p[i] = 1;
		q[i] = 1;
	}


	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= i; j++) {
			if (a[i] > a[j])
				p[i] = max(p[i], p[j] + 1);
		}
	}

	for (int i = n; i >= 1; i--) {
		for (int j = n; j >= i; j--) {
			if (a[i] > a[j])
				q[i] = max(q[i], q[j] + 1);
		}
	}

	int ans = 0;

//	for (int i = 0; i <= n; i++) {
//		printf("%d %d\n", p[i], q[i + 1]);
//	}

	for (int i = 1; i <= n; i++)
		ans = max(p[i] + q[i+1], ans);

	printf("%d", n - ans);

	return 0;
}

最后求ans的时候后缀数组q的范围我使用的是i+1,wa了两个点,求解

2024/3/3 21:04
加载中...