![](https://img-blog.csdnimg.cn/20210920122742940.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
DP - DAG上DP
文章平均质量分 92
DP - DAG上DP
繁凡さん
只想当个小透明,就图一乐^q^,希望可以做出一些微小的贡献(目前研究方向:自然语言处理、深度学习中的对抗攻击、元学习,欢迎大佬们来与我交流^0^)
展开
-
CF510D Fox And Jumping(动态规划转换为最短路,O(n^2×2^9) -> O(nlogn),裴蜀定理应用)
根据裴蜀定理得到思路,通过推导将暴力的动态规划转换为更加优秀的最短路问题,O(n^2×2^9) -> O(nlogn)妙啊,妙啊 ~ 以下内容摘自 我的博客:算法竞赛中的数论问题 - 数论全家桶(信奥 / 数竞 / ACM)作者孟繁宇,四万字,十三万字符的竞赛数论完全总结,将会择机发布,敬请期待 ~原创 2021-01-30 23:58:35 · 379 阅读 · 0 评论 -
UVA116 单向TSP Unidirectional TSP(多阶段决策问题、输出字典序最小的方案、DAG上DP)
题目传送门 简单的多阶段决策问题。 多段图DAG,其节点可以划分为若干个阶段,每一个阶段只由上一个阶段所决定。 因为本题要求输出从前到后的方案,所以我们转移方程的时候必须从后往前转移,并且保存每次的最优最小决策,放到nex数组里,这样我们转移完成之后就可以直接从前往后遍历一遍输出方案。如果我们依然正着往后推,那么我们只能记录每一个节点的前驱pre,最后还需要倒序输出方案,比较麻烦。 因为要将字典序最小方案输出,所以我们右,右上,右下,三个因为是一个环状所以我们需要每次一个排序。每次取相同结果的编号字典序最原创 2020-10-14 19:38:17 · 308 阅读 · 0 评论 -
UVA437 巴比伦塔 The Tower of Babylon(矩形嵌套进阶版、DAG上DP、记忆化搜索)
本题和基础的矩形覆盖差不多,只不过变成了三维的长方形。 因为每次转移的时候只有顶面的x和y会影响决策的进行,所以我们只需要用一个二元组(a,b)(a, b)(a,b)来表示顶面即可。 但是因为长方体的长宽高可能会很大,所以如果我们直接用一个数组表示数值的话是存不下的,因此我们令开一个数组存下所有点的信息,用x表示每一个点的标号即可。至于如何表示高是谁(高实际上就是我们放置这个长方体时获得的权值)因为一共有三个边的长度,我们可以将他们标号为0,1,2,放到一个数组里,我们用k表示这个高的标号,我们每次找答案.原创 2020-10-13 22:42:41 · 227 阅读 · 0 评论 -
UVA1025 城市里的间谍 A Spy in the Metro(2003 ICPC world final)(DAG上DP)
输入比较麻烦 因为时间是单向流逝的,所以是一个天然的“序”,我们可以用一维用来循环枚举时间,我们规定 f[i][j]表示当前时刻为i,你的位置为车站j的最少的车站里的等待时间。 初始位置设置为f[0][1] = 0其余的为INF,用于使用min取最小值。 我们根据题意,一共有三种可能的决策: 在站台上等候一分钟 搭乘地铁向右走(如果有的话) 搭乘地铁向左走(如果有的话) 我们这三种情况(决策)对应了三种转移方程: 4. f[i][j] = min(f[i][j], f[i - 1][j] + 1);(.原创 2020-10-13 21:30:27 · 241 阅读 · 0 评论