码迷,mamicode.com
首页 > 其他好文 > 详细

HRBUST 2010【简单dp+最长递减子序列】

时间:2018-05-01 12:32:56      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:AC   mes   stdio.h   name   递增   can   code   clu   i+1   

题目:所谓二等队形就是从大到小依次排列,即对于数列a,二等队形为任意a【i】满足:a【i】>a【i+1】。现在给出一个长度为n的数列,从中最少去除多少个数可使数列变成二等队形数列。

做法和递增的没啥差别

#include<stdio.h>
#include<string.h>
#include<queue>
#include<cmath>
#define MAX 1000+10
#define INF 0x3f3f3f3f
int n;
int dp[MAX];

using namespace std;

int main(void) {
    int a[MAX];
    while (~scanf("%d", &n)) {
        for (int i = 1; i <= n; i++)
            dp[i] = 1;
        for (int i = 1; i <= n; i++)
            scanf("%d", &a[i]);

        a[0] = INF;
        dp[0] = 0;
        for (int i = 1; i <= n; i++) {
            for (int j = 0; j < i; j++) {
                if (a[i] < a[j]) {
                    dp[i] = max(dp[j] + 1, dp[i]);

                }

            }

        }
        int maxx = -INF;
        for (int i = 1; i <= n; i++) {
            maxx = max(dp[i], maxx);

        }
        printf("%d\n", n - maxx);

    }
    return 0;
}

HRBUST 2010【简单dp+最长递减子序列】

标签:AC   mes   stdio.h   name   递增   can   code   clu   i+1   

原文地址:https://www.cnblogs.com/tennant/p/8975678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!