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 ,,,

  • 相关阅读:
    关于两次fork
    阻塞非阻塞与同步异步的区别
    函数调用堆栈
    数组
    64位操作系统与32位操作系统数据类型的字节数
    Redis 键(key)
    Redis 命令
    Redis 安装
    Redis 配置
    MongoDB 安装
  • 原文地址:https://www.cnblogs.com/gdutbean/p/1697283.html
Copyright © 2011-2022 走看看