• Day5


    DP为什么这么难受啊....

    luogu p1156

    题意

    ​ 小明掉井里了,这个井深为D,由于体能消耗,小明只能坚持10小时就要见上帝,幸运的是每隔一段时间有人给小明投垃圾,吃垃圾续命,不吃垃圾可以用来垫脚减少与井口的距离。问给出D和一段垃圾序列,以及对应的续命时间和垫脚高度,问小明能否或者出来,能则输出最小时间,否则输出最大苟命时间

    思路

    ​ 相关元素有时间、生命、高度、垃圾,由于每个垃圾可吃可不吃,故而dp的第一个维度给垃圾表示决策的阶段,

    然后关于时间、生命、高度,由于垃圾本身代表了时间,所以可以不用再考虑,现在只剩下生命与高度两个维度。经过分析(不想写了,其实是生命的上限并不确定,但是高度的上限是确定的,方便DP),选择了第二个维度为高度,然后dp值表示最大生命。

    ​ 然后这里存在两种思路,填表法,即根据上一个状态+当前决策来决定当前状态,即d[i]是由d[i-1]+对于i的决策来影响。或者是刷表法,d[i] + 对于i+1的决策来影响d[i+1]

    ​ 填表法:

    ​ 状态转移很好写,在dp的时候判断,如果填表更新了井口,也就意味着存在决策有解,那么直接break输出。否则,退出循环输出dp[n][0]。注意状态转移的条件和初始化

    ​ 刷表法:

    ​ 状态转移的考虑为:d[i+1] 的更新是由d[i]来完成的,注意前提,如果井口刷新则break,

    ​ 否则输出d[i][0]。

    今天又是糟糕的一天呐。

  • 相关阅读:
    Rpc简单入门
    对话Task
    对话线程
    译MassTransit 生产消息
    MassTransit 实现应用程序间交互
    译MassTransit 消息契约
    轻松理解AOP思想(面向切面编程)
    Elasticsearch 全教程
    Elasticsearch 教程--搜索
    Elasticsearch 教程--数据
  • 原文地址:https://www.cnblogs.com/backkom-buaa/p/11483357.html
Copyright © 2020-2023  润新知