zoukankan      html  css  js  c++  java
  • 最长非单调增序列(最长非单调增序列,,要用N*LOG N(非常值得琢磨的算法。)

    http://acm.pku.edu.cn/JudgeOnline/problem?id=1887

    (最长非单调增序列,,要用N*LOG N(不然会超时。))

    二分模板:

    int Find(int a,int end)

    {

             if(a>=ans[1])return 1;

             for(int beg=1;beg!=end-1;)

             {

                       int mid=(beg+end)/2;

                       if(ans[mid]<=a)end=mid;

                       else beg=mid;

             }

             return end;

    }

    刚开始这个N*LOGN的算法主要是二分的方面取优

    然而,,鸭子的一句话让我仔细想想

    我才发现

    巧妙的是他不是根据原先N^2的算法在原地取优,而是换一种思维,用另外一个数组来记录

    数组ans[i]记录长度为i的最优序列的最小值的最大值,

    感觉像是贪心多一点,这是一个值得反复琢磨的算法,相信在以后会有很大的用处,,

  • 相关阅读:
    hdu 5072 Coprime (容斥)
    洛谷 P1411 树 (树形dp)
    Tr/ee AtCoder
    sys.path
    uname
    sys.platform
    Eclipse Basic
    Eclipse Color Theme
    Pydev
    scons
  • 原文地址:https://www.cnblogs.com/gdutbean/p/1698248.html
Copyright © 2011-2022 走看看