随笔分类 - dp
摘要:tag:dp,线段树,单调栈 设 \(f_i\) 为前 \(i\) 个元素的最小花费,则转移方程为: \[ f_i = \min_{[i,j]\text{可以放同一个数字}}f_{j-1}+1 \] 而 \([i,j]\) 可以放同一个数字就相当于是 \(\max l_i\le\min r_i\)。
阅读全文
摘要:tag:背包dp,数论 首先可以把给定的排列分成若干循环,将长度相同的分为一组,则可以分别处理每组然后乘起来。 对于一组数量为 \(cnt_a\) 长度为 \(a\) 的循环,再分成若干组,假设其中一组有 \(b\) 个,则必须满足 \(\gcd(ab,k)=b\)。而这样一组的贡献为 \((b-1
阅读全文
摘要:tag:序列自动机,状压dp 一眼看上去感觉不太好做,实际上可以枚举所有串,然后问题就变为统计一个串是多少个串的子序列。 可以构建一个子序列自动机,然后将初始状态(给出的字符串)设为 \(1\),再跑一个dp即可。 状态定义如下: \(f[len][S]\) 用一个01串表示状态 开头一个1,用来表
阅读全文
摘要:tag:区间dp 和AT3859 [AGC020E] Encoding Subsets一模一样。。(这个黑的还好写一点,因为是计数) 设 \(f(s)\) 为 \(s\) 的答案,\(g(s)\) 为将 \(s\) 表示成k(s') 的答案。 求 \(f\) 时枚举一个前缀,用 \(g(s_{[0,
阅读全文
摘要:tag:树形dp \(n^3\) 暴力,设 \(f_{i,j}\) 表示 \(i\) 的关键点为 \(j\)。 转移时枚举 \(x\) 的关键点和 \(son\) 的关键点,转移条件即为满足关键点的性质(关键点为所有源点中离它最近的) \(dis(x,p_x)\le dis(x,p_{son})\)
阅读全文
摘要:tag:背包dp,插值 考场50分,对着数据怀疑人生一个小时,然后教练过来说数据挂了。。 然而下发的标程也挂了,又怀疑人生了一个小时。。 对于 \(40%\) 很容易就能想到枚举 \(m\),然后跑背包dp。 仔细观察这个dp是形如: \[ \sum_{S\subseteq\{1\cdots n\}
阅读全文
摘要:tag:轮廓线dp 手玩一下会发现,最少需要4个镜子才能减少答案,多玩一下就能发现,减少的答案就等于镜子形成的回路长度。 \(ans=4nm-2len\) 为了计算这个东西,可以理解为,从镜子射出光线,然后贡献就是那些没有到达边界的光线的总长度。 然后问题就变成了,放 \(k\) 个镜子,形成的封闭
阅读全文

浙公网安备 33010602011771号