zoukankan      html  css  js  c++  java
  • lcis

    关于$dp$数组定义的思考

    $lcis$最简单定义$f[x][y]$表示以$x$,$y$结尾的最长子序列,$n^4$看上去很难优化

    $lcs$本来也是$n^4$回忆怎么优化的,$f[x][y]$原本表示以$x$,$y$结尾的最长子序列,然而数组定义稍微改变一下表示枚举到$x$,$y$为止的最长子序列,定义成了类似于最长前缀的性质

    $f[x][y]=max(f[x][y-1],f[x-1][y])$再$f[x][y]=max(f[x][y],f[x-1][y-1]+1)$为什么这样定义,我们并不关心之前转移具体是多少,我们要找的是之前最大的,我们并不关心之前状态是什么,所以这样定义是对的,

    $lcis$也可以用这个优化一下,但不能完全定义成前缀最大值,我们要保证公共的前提下还要保证单调上升,但我们注意到$i,j$表示相同,那么我们可以舍弃掉一维来优化

    $f[i][j]$定义成在$A_1-A_i$ 以$B_j$为结尾的最长公共子序列是多少

    考虑转移

    $f[i][j]=f[i-1][j](if(b[j]!=a[i]))$当前点不是合法转移点,直接继承

    $f[i][j]=max(f[i-1][k])+1(b[k]<b[j])$又$b[j]==a[i]$(当前点)则$f[i][j]=max(f[i-1][k])+1(b[k]<a[i])$

    然后考虑再次优化,再拿一个最大前缀优化即可

    事实上,我之前做过类似定义的,一个树上$dp$叫消防局的建立,优化也是这样优化,自己做题就像没有任何收获

    遇到题,不要一味看题解,抄代码,多思考,是做一名合格$oier$所需的,这些我都没做到自己码力越来越弱,又越来越颓废,我沦落到现在这个底部是罪有应得,但还是希望自己以后能够金盆洗手,改过自新

  • 相关阅读:
    JSONObject登录接口
    HttpClient跨域请求post
    线段树个人理解及模板
    Python基本语法(一)
    Boyer-Moore算法
    Sunday算法浅谈
    Kmp算法浅谈
    bm坏字符 , Horspool算法 以及Sunday算法的不同
    字典树的建立和基本查找
    CF Round551 Div2 题解
  • 原文地址:https://www.cnblogs.com/znsbc-13/p/11627163.html
Copyright © 2011-2022 走看看