hdu_1257

#include <cstdio>

int a[11111], n;

int main(int argc, char const *argv[])
{
    while(~scanf("%d", &n)){
        int m = 0;
        a[1] = -1;
        for(int i = 1, x; i <= n; ++i){
            scanf("%d", &x);
            int j = 1;
            for(; j <= m; ++j){
                if(a[j] >= x){
                    a[j] = x;
                    break;
                }
            }
            if(j > m)
                a[++m] = x;
        }
        printf("%d\n", m);
    }
    return 0;
}
时间: 2024-12-23 00:30:44

hdu_1257的相关文章

HDU_1257 最少拦截系统 (dp)

题目请点我 题解: 这道题是一道很简单的题目,但是比赛的时候卡了很久.发现自己总是在比赛的时候不会快速的去快速建模,卡死到一道题上面.这次比赛最终竟只做出了这一道题,really sucksssss. 练的太少了... 这道题其实有很多种方法可以解: 1.暴力 每设置一个标杆从头到尾遍历一次,将所有能消灭的导弹打掉,看最后需要遍历几次: 2.贪心 设置一个标杆数组,每次从头判断使用那个标杆去更新,如果不能更新就新设置一个标杆.最终结果为标杆的数目: 3.dp 最长上升子序列: 测试数据: 5 5