zoukankan      html  css  js  c++  java
  • P1091 合唱队形 TJ

    题目链接

    思路

    正难则反。
    求出保留的,即最长上升子序列,从头和从尾各求一遍,最后枚举出最大的保留的位数,
    然后用 (n) 减去保留位数加 (1) 即可。

    代码

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    const int MAXN = 101;
    int n ,a[MAXN] ,ans = 0;
    int dp[MAXN] ,dp_[MAXN];
    int main () {
    	scanf ("%d",&n);
    	for (int q = 1;q <= n;++ q) {
    		dp[q] = dp_[q] = 1;
    		scanf ("%d",&a[q]);
    	}
    	for (int q = 1;q <= n;++ q) {
    		for (int w = q - 1;w >= 1;-- w) {
    			if (w < dp[q]) break;
    			if (a[q] > a[w]) {
    				dp[q] = max (dp[q] ,dp[w] + 1);
    			}
    		}
    	}
    	for (int q = n;q >= 1;-- q) {
    		for (int w = q + 1;w <= n;++ w) {
    			if (n - w + 1 < dp_[q]) break;
    			if (a[q] > a[w]) {
    				dp_[q] = max (dp_[q] ,dp_[w] + 1);
    			}
    		}
    	}
    	for (int q = 1;q <= n;++ q)
    		ans = max (ans ,dp[q] + dp_[q]);
    	printf ("%d
    ",n - ans + 1);
    	return 0;
    }
    
    
    cb
  • 相关阅读:
    腾讯2面
    腾讯1面
    快手2面
    快手1面
    formData+ajax文件上传
    nginx限流&健康检查
    jvm crash分析
    Spring Cloud Gateway整合Eureka
    k8s-应用部署
    dockerfile-maven plugin自动镜像制作并发布
  • 原文地址:https://www.cnblogs.com/tuscjaf/p/13834376.html
Copyright © 2011-2022 走看看