• 【NOIP1999】【Luogu1020】导弹拦截


    problem

    solution

    codes

    //多少个最长不上升子序列可以覆盖这个数列,其实是等效于最长上升子序列的长度
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n, h[50], k[50], ans1, ans2 = 1;
    int dp1[50], dp2[50], maxn;
    int main(){
        while(cin>>h[n]) n++; 
        dp1[0] = 1; dp2[0] = 1; k[0] = h[0];
        for(int i = 1; i < n; i++){
            //DP1
            maxn = 0;
            for(int j = 0; j < i; j++)
                if(h[j]>=h[i])maxn = max(maxn, dp1[j]);
            dp1[i] = maxn+1;
            ans1 = max(ans1, dp1[i]);
            //DP2
            maxn = 0;
            for(int j = 0; j < i; j++)
                if(h[j]<=h[i])maxn = max(maxn, dp2[j]);
            dp2[i] = maxn+1;
            ans2 = max(ans2, dp2[i]);
        }
        cout<<ans1<<"
    "<<ans2;
        return 0;
    }
  • 相关阅读:
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    5.14
    5.13
    5.12
  • 原文地址:https://www.cnblogs.com/gwj1314/p/9444837.html
Copyright © 2020-2023  润新知