luogu P1091 合唱队形

任务计划推了很久才做www

从两头开始的单调上升队列

没啥可说的

#include<cstdio>
#include<algorithm>
using namespace std;
#define maxn 110

int a[maxn];
int f[2][maxn];
int ans;

int main() {
    int n;
    scanf("%d",&n);
    for(int i = 1; i <= n; i++)
        scanf("%d",&a[i]);
    a[0] = a[n + 1] = 0;
    for(int i = 1; i <= n; i++)
        for(int j = 0; j < i; j++)
            if(a[i] > a[j])
                f[0][i] = max(f[0][i],f[0][j] + 1);
    for(int i = n; i >= 1; i--)
        for(int j = n + 1; j > i; j--)
            if(a[i] > a[j])
                f[1][i] = max(f[1][i],f[1][j] + 1);
    for(int i = 1; i <= n; i++)
        ans = max(ans,f[0][i] + f[1][i] - 1);
    printf("%d",n - ans);
    return 0;
}
原文地址:https://www.cnblogs.com/sevenyuanluo/p/10352829.html