暴力求条
查看原帖
暴力求条
1345783
BK小鹿楼主2025/1/9 22:55

rt,不知道哪错了

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

const int N = 105;

int n;
int a[N], f[N], f1[N];
int ans = 114514;

#define gc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin),p1==p2)?EOF:*p1++)
char *p1, *p2, buf[1 << 20 + 5];
inline int read() {
	int x = 0;
	char c = gc();
	while (!isdigit(c)) {
		c = gc();
	}
	while (isdigit(c)) {
		x = x * 10 + (c ^ 48);
		c = gc();
	}
	return x;
}

int main() {
    n = read();
    for (int i = 1; i <= n; i ++ ) a[i] = read();

    for (int l = 2; l <= n; l ++ ) {
        for (int i = 1; i <= n; i ++ ) f[i] = f1[i] = 1;

        for (int i = 1; i <= l; i ++ )
          for (int j = 1; j <= i; j ++ )
            if (a[j] < a[i])
              f[i] = max(f[i], f[j] + 1);
        
        for (int i = l + 1; i <= n; i ++ )
          for (int j = l + 1; j <= i; j ++ )
            if (a[j] > a[i])
              f[i] = max(f[i], f[j] + 1);
        
        int res1 = 0, res2 = 0;
        for (int i = 1; i <= n; i ++ ) res1 = max(res1, f[i]), res2 = max(res2, f1[i]);
        int cnt = n - res1 - res2 + 1;
        ans = min(cnt, ans);
    }

    printf("%d\n", ans);
    return 0;
}
2025/1/9 22:55
加载中...