zoukankan      html  css  js  c++  java
  • luogu1020 导弹拦截

    题目大意

      一些导弹按照时间从前往后的顺序以一定高度发过来,一个导弹拦截系统随时间的推移只能拦截高度不上升的一组导弹。问一个系统最多能拦截多少导弹,以及要拦截所有导弹至少需要多少个系统。

    思路

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    const int MAX_N = 100010;
    int A[MAX_N];
    
    struct BIT
    {
    private:
        int C[MAX_N];
        int N;
    
        int Lowbit(int x)
        {
            return x & -x;
        }
    
    public:
        void Init(int n)
        {
            N = n;
            memset(C, 0, sizeof(C));
        }
    
        void Update(int p, int delta)
        {
            if (p < 1)
                return;
            while (p <= N)
            {
                C[p] = max(C[p], delta);
                p += Lowbit(p);
            }
        }
    
        int Query(int p)
        {
            int ans = 0;
            while (p > 0)
            {
                ans = max(ans, C[p]);
                p -= Lowbit(p);
            }
            return ans;
        }
    }g;
    
    int main()
    {
        int n = 1;
        while (~scanf("%d", A + n))
            n++;
        n--;
        int maxVal = 0;
        for (int i = 1; i <= n; i++)
            maxVal = max(maxVal, A[i]);
    
        int ans = 0;
        g.Init(maxVal);
        for (int i = 1; i <= n; i++)
        {
            int qAns = g.Query(maxVal - A[i] + 1) + 1;
            ans = max(ans, qAns);
            g.Update(maxVal - A[i] + 1, qAns);
        }
        printf("%d
    ", ans);
    
        g.Init(maxVal);
        ans = 0;
        for (int i = 1; i <= n; i++)
        {
            int qAns = g.Query(A[i] - 1) + 1;
            ans = max(ans, qAns);
            g.Update(A[i], qAns);
        }
        printf("%d
    ", ans);
        return 0;
    }
    

      

  • 相关阅读:
    继续致歉
    向大家致歉!!
    访问速度调查
    致歉
    [功能改进]通过Blog客户端直接发随笔至网站分类
    带宽升级公告
    创业团队的类型
    [讨论]基于.NET的开源论坛软件的选择
    调整一下工作的节奏
    公告
  • 原文地址:https://www.cnblogs.com/headboy2002/p/9375615.html
Copyright © 2011-2022 走看看