• HDU1257最少拦截系统


    题目连接(点我查看).

    琢磨了一天。。竟然有人说这是水题。。

    解题报告:

    首先要弄懂最长上升子序列,可以看下征南同学的博客(点击链接)。

    本题呢。例如对于6 7 5 1 3 2 4

    先将7放入数组【0】, 然后看5,因为5<=7,更新数组, 数组[0] = 5,接着看剩下的1,3,2。用1更新【0】,然后3>1,所以放在【1】中,2更新【1】,4>1,4>2,4放在【2】,这样呢。就需要2+1套拦截系统。

    该思路代码如下。

    #include <iostream>  
    #include <cstdlib>  
    #include <cstdio>  
    #include <algorithm>  
    #include <cstring>  
    #include <stack>  
    #include <vector>  
    #include <queue>  
    #include <map>  
      
    using namespace std;  
      
    const int INF = 30000+100;  
      
    int a[3000];  
      
    int main(){  
        int n, m;  
        while(cin>>n){  
            m = 0;  
            for(int i=1; i<=n; i++) a[i] = INF;  
            for(int i=0; i<n; i++){  
                int t;  
                cin>>t;  
                int k = lower_bound(a+1, a+n+1, t) - a;  
                a[k] = t;  
                m = max(m, k);  
            }  
            cout<<m<<endl;  
        }  
      
        return 0;  
    }  
      
  • 相关阅读:
    js-21点小游戏
    js-打印出现最多次的字母
    盒模型浮动
    九九乘法表
    猫眼-湄公河行动电影介绍页面
    (day4)用css画三角形以及红旗
    cookie的使用
    用Servlet校验密码2
    Servlet登录验证
    Servlet概述
  • 原文地址:https://www.cnblogs.com/tanhehe/p/2909835.html
Copyright © 2020-2023  润新知