avatar
Articles
91
Tags
81
Categories
26

Home
Archive
Tag
Category
Repose
  • Gallery
  • Music
Link
About
Colythme
Search
Home
Archive
Tag
Category
Repose
  • Gallery
  • Music
Link
About

动态规划

「HNOI2007」梦幻岛宝珠 「套路:分层DP」
Created2020-08-04|动态规划
显然直接 $01$ 背包会超时并且超空间 套路:分层 $DP$ 「考虑将每个子结构看作一层(也就是包含了不止 $1$ 个物品的信息),并且大层不会对小层造成影响,可以考虑先进行每一层的自我更新(即用当前层物品更新当前层答案),再进行层的合并,此时考虑低层对高层的影响」 正题 那么这题有一个特殊性质: $V_i = a \times 2^b$ b值大的物品不会影响零碎剩余的重量上限。 将物品按b值分阶段处理。 那么就是分层 $DP$ 先通过普通的 $01$ 背包更新当前层自身最优解 再进行层合并: 令 $g_{i, j}​$ 表示第 $i​$ 层,$a​$ 为 $j​$ 的最优解,$f_{i, j}​$ 表示第 $i​$ 层,$a​$ 为 $j​$,并且再加上 $V_{total}​$ 的 $1…i - 1​$ 位的最优解 那么对于第 $i$ 层,枚举当前 $j$ 对于转移,枚举在自身层内消耗的空间 $(j - k) \times 2^i$,那么还剩下 $k \times 2^i + V_{total}\{1…i - 1\}$ 的空间,分配给上一层,那么可得转移方程为 (注:$w_i ...
「CERC2014」Outer space invaders
Created2020-08-04|动态规划
题意给定 $n$ 个线段,每个线段有一个权值 $w_i$,每次取轴上一点,获得的权值为选择的覆盖在当前点上的线段的最大权值,求最终覆盖所有线段后需要的最小权值 题解好吧是一道非常水的区间 $dp$ 然而我并没有想出来所以我是真的绝望 先把 $l_i, r_i$ 离散化后令 $f_{l, r}$ 表示完全覆盖区间 $[l, r]$ 的线段的最小权值,设完全处于 $[l, r]$ 的线段中权值取最大值的线段 $p$,则有转移方程$$f_{l, r} = \min \{f_{l, k - 1} + f_{k + 1, r} + w_p\} (l_p \le k \le r_p)$$所以注意一定要完全覆盖,$[l, k - 1], [k + 1, r]$ 才不会对 $[l, r]$ 造成影响,于是我就卡这儿了 谨以此文纪念我逝去的智商 代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 ...
「APIO2013」机器人
Created2020-08-04|动态规划
首先因为点数不多,可以考虑先在 $4r \times c$ 时间内将每个点朝每个方向可以到达的位置预处理出来,建成图 那么现在容易看出是斯坦那树问题,所以考虑将问题简化一下: 现在给定 $n$ 个不同级别的机器人,将两段级别的机器人合并需要花费 $c_i$,那么将所有机器人合并的最小花费是多少 这个问题显然使用区间 $DP$ 可以解决,那么扩展到斯坦那树上即可 令 $f[l][r][i]$ 表示区间 $l, r$ 的机器人合并后位于位置 $i$ 的最小花费,则有$$f[l][r][i] = \min \{f[l][k][i] + f[k + 1][r][i]\}$$以及$$f[l][r][i] = \min\limits_{p link to i} \{f[l][r][p] + 1\}$$第二个式子直接 $SPFA$ 会超时 但是观察每条边的贡献都为 $1$,所以可以将 $SPFA$ 优化成 $BFS$ 的复杂度 类似堆优化的思想,开两个队列,一个存初始的经过 $f$ 排序的点,一个存被松弛的点,由于边的性质及 $que1$ 经过排序的原因,所以 $que2$ 一定也是按 $ ...
LOJ6039 - 「雅礼集训 2017 Day5」珠宝 「重量较小的大数据01背包」
Created2020-08-04|动态规划
题目描述$01$ 背包,数据范围 $1 \le n \le 1e06, 1 \le weight_i \le 300$ 题解神仙 $01$ 背包 考虑重量较小,故可以考虑根据重量分层处理 令 $f_{i, j}$ 表示使用前 $i$ 个重量,总共花费 $j$ 容量的最大价值 容易注意到在同一重量中显然要优先选择价值大的,故将每种重量按价值排序,令 $sumv_{i, j}$ 表示重量为 $i$ 的前 $j$ 大的价值前缀和,则有$$f_{i, j} = \max\limits_k \{f_{i - 1, j - ki} + sumv_{i, k}\}$$然后(通过看题解)可以发现,因为是 $j - ki$,故可以考虑按照 $j \mod i$ 分类处理,这样是满足决策单调性的 至于证明,为了方便可以将式子简化成 $f_i = \max \{f_j +sumv_{i - j}\}$ 的形式,然后用反证法或是四边形不等式都容易证明 那么最后就可以用决策单调性的套路代码或者是用分治解决了 分治比较简单,大概就是看在处理区间 $[u, v]$, $[l, r]$ 决策区间内对于 $mid$ 位 ...
CF917D Stranger Trees
Created2020-08-04|动态规划
Solution Ⅰ一道有点有趣的树形 $dp$ + 容斥,反正绕了我半天,这么神仙我也不可能写出来 首先考虑基本思路,直接求解恰好 $k$ 个较难,故考虑先求解大于等于 $k$ 的相似度的方案数,然后再容斥 考虑选定了必选的若干条边后计算方案数。显然此时整个图被分成了若干连通块,假设有 $k$ 个连通块,将连通块缩点,考虑它们可以组成的树的方案数,本来应该是 $k^{k - 2}$,然而对于每个连通块的缩点,它可以向其它连通块中包含的任意一点连接,也就是说,在 purfer 序列中,应当考虑连通块内的点编号在序列中的出现情况,而不是仅仅考虑连通块编号出现在序列中,故 prufer 序列中的每个位置可以填 $n$ 个数,即 $n^{k - 2}$,然而考虑了父亲,还需要考虑儿子,作为叶子节点的缩点后的连通块,同样的里面也是任意点向外连边,故还需乘上 $\prod size_i$,其中,$size_i$ 为连通块 $i$ 的大小,那么综上,对于一个存在 $k$ 个连通块的图,其构造的生成树的方案数为 $n^{k - 2} \times \prod size_i$ 那么现在考虑求解 $\p ...
12
avatar
Colythme
NO GAME NO LIFE
Articles
91
Tags
81
Categories
26
Follow Me
Recent Post
Analysis of Horror Game Design | Creators' Gacha Games - Part One2023-09-10
Analysis of Horror Game Design | Creators' Gacha Games - Part Two2023-09-10
Horror Game闲谈012023-09-05
Operating System2023-08-30
ABOUT ME2023-07-14
Categories
  • 3D3
  • AMP Learning3
  • Essays1
  • Game Design2
  • Machine Learning4
  • Operating System1
  • Social Network1
  • Web31
Tags
2-SAT 矩阵乘法 Game Essays 虚树 数学 网络流 二分图 多项式 点分治 GraphTheory OS Game Design 长链剖分 UE 扫描线 3D 归纳 动态点分治 prufer序列 杜教筛 组合数学 卡特兰数 Blockchain FWT 生成树 RL 博弈论 背包DP LCT 二分答案 ThreeJS 斯坦纳树 iClone 最短路 树上DP 线段树 后缀数组 ML 交互题 AtCoder Tarjan 线性基 树形DP FFT/NTT 斜率优化 概率DP 倍增 NLP 构造 数学期望 CRT/ExCRT 状压DP 容斥原理 集训 可持久化线段树 区间DP 边分治 矩阵树定理 整体二分 启发式合并 分块 杂谈 线性DP Web3D Python DigitalHuman AC自动机 OEIS 最小生成树 C++ 动态规划 Avatar 莫比乌斯反演 思维 最短路DP 贪心 ExGCD 生成函数 随机化 后缀自动机 分层DP
Archives
  • September 20233
  • August 20231
  • July 20239
  • February 20231
  • June 20221
  • May 20221
  • September 20211
  • July 20213
©2020 - 2023 By Colythme
Framework Hexo|Theme Butterfly
Search
Loading the Database