• 笔记


    子序列

    某个序列的子序列是从最初序列通过去除某些元素(可以不去除,也可以全部去除)但不破坏余下元素的相对位置(在前或在后)而形成的新序列。设原序列为({a_1,a_2,a_3dots a_n})({a_i, a_j, a_k, dots | 1 le i<j<k< dots le n})是它的一个子序列。如对于({1,2,3,4,5,6,7})这个序列,(emptyset,{1,3,5,7},{2,4,6},{1,3,5,6,7},{1,2,3,4,5,6,7})都是它的子序列(不是全部)。

    动态规划 最长xxx子序列的长度

    求最长下降子序列、最长上升子序列、最长不下降子序列……的长度都可以归为这一类问题。

    定义:设(P(a,b))是某一性质,如求最长下降子序列时性质为下降:(P(a,b) iff a>b),求最长上升子序列时性质为上升:(P(a,b) iff a<b)。给定序列(S = {a_1,a_1,a_2,a_3dots a_n}),求它的最长的子序列({b_1,b_1,b_2dots b_m | forall i<j, P(b_i,b_j) })的长度。

    ({11,7,6,5,9,8,7,10,9,8,7})的最长下降子序列是({11,10,9,8,7})({1,2,3,1})的最长上升子序列是({1,2,3})

    (O(n^2))的动态规划方法:记(l_i)为以第i个数结尾的子序列的最长长度,则(l_1 = 1),当(i>1)(l_i = 1+max_{k in [1,i)} {l_k | P(a_k,a_i) })。然后答案就是(max_{i=1}^{n}{l_i})

    Markdown

    表格:

    T1 T2
    1 2
    3 4
  • 相关阅读:
    浏览器的reflow和repaint
    javascript正则表达式中参数g的作用
    InkCanvas 自由虚线笔画
    WPF 圆轮菜单的实现
    WPF实现化学式上下标
    install and use zookeeper C client API
    install and use boost::thread
    explicit instantiations in template class/function
    The science of programming
    how does vector work?
  • 原文地址:https://www.cnblogs.com/jt2001/p/6073339.html
Copyright © 2020-2023  润新知