迷宫
其实他这个DP状态解释的有一点问题,终点不一定非要是
其实就是在
于是就可以好好理解上面的转移过程了;然后最开始的初始化过程指的是起点终点都是根的情况,所以要这么初始化(从下面的main函数来看,dp数组是被初始化为负无穷的,负无穷代表不合法状态)
这个更新答案的过程感觉没必要这么复杂,不太好理解,感觉讨论一条链的陷阱个数
注意这个代码用了树形DP求树的直径的类似的做法
update 2024.6.29
这里当然可以用换根DP,然而,我们也可以记一下,这里由于是一条链,在某一颗以
为什么最开始枚举每个节点都是根节点的时候,可以不用设第三维呢?这就是因为如果枚举每个根节点的话,当前被枚举的这个根节点一定是起点,也就不会导致答案的丢失。比如说一条路径一个端点没有陷阱另一个端点有陷阱,但是只允许经过一个陷阱,那么显然起点只能是哪个没有陷阱的端点,然而如果我们指定了有陷阱的端点是根节点的话,显然这条路径(如果我们的状态不开第三维)就不会被枚举到了,这就要求我们再指定没有陷阱的端点为根节点,然后再做一次DP来覆盖这个答案
update 2024.8.31
上面的DP数组是自适应方向的,其实更好理解的方式应该是我们手动规定一个方向,设
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构