zoukankan      html  css  js  c++  java
  • 解决后效性。。最大子序列和扩展。。

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

    给一个序列,从头走到尾,可以跳过某些点

    刚开始的 T=0走一步T  +1

    当走到某个点的时候

    T为偶数,就减去某个点的值

    T为奇数,就加上某个点的值

    求走完序列的最大值

    分析:

    每个点都有三种可能

    1)不走=====不走的时候相当于把这个点忽略掉,

    2)偶数时间走====偶数时间走,那上一个“走的点”的时间必须选为奇数

    3)奇数时间走====,那上一个“走的点”的时间必须选为偶数

    满足最优子结构:

    长度为 N 的最优解

    [N][0]=MAX([N-1][0],[N-1][1]-COL[N]);(0表示偶数时间)

    [N][1]=MAX([N-1][1],[N-1][0]+COL[N]);(1表示奇数时间)

    总结

    :一般的最大子序列,。没有分偶数,奇数时间的,,满足DP的无后效性,可以直接一维过去

    但是,加入了偶数,奇数时间的限制后,不满足DP的无后效性了。最一般的解决方法就是加多一维表示时间的奇偶性。消除后效性.OK ,,,

  • 相关阅读:
    JQuery
    Ubuntu18.04
    Ubuntu18.04
    Ubuntu18.04
    Ubuntu18.04
    Cordova
    Android
    Android
    Delphi
    postgresql之 drop & delete & truncate
  • 原文地址:https://www.cnblogs.com/gdutbean/p/1697283.html
Copyright © 2011-2022 走看看