做题记录 25.9.10

\(\textcolor{black}\odot\) P9962 [THUPC 2024 初赛] 一棵树

\(f_{u,i}\) 表示子树 \(u\) 内选择 \(i\) 个黑点的方案数

设要把 \(v\) 并入 \(u\),原本的 \(f_u\) 记为 \(f\)\(f_v\) 记为 \(g\),合并后的 \(f_u\) 记为 \(h\),则转移为

\[h_x\gets\min_{a+b=x}(f_a+g_b+|2b-k|) \]

保存 \(f_{u,\ast}\) 的差分数组 \(f'_{u,\ast}\),则 \(g_b\gets g_b+|2b-k|\) 等价于 \(g'_0\gets g'_0+k\)\(g'_{1\sim \lfloor\frac k2\rfloor}\) 减去 \(2\)\(g'_{\lceil\frac k2\rceil+1\sim sz(v)}\) 加上 \(2\)

每个 \(f_{u,\ast}\) 用两个可并堆维护,一个保存前 \(\frac k2\) 个值,一个保存剩余值

时间复杂度 \(O(n\log n)\)

代码

参考

LOJ #3626. 「2021 集训队互测」愚蠢的在线法官

存在相同的 \(a\) 时显然行列式为 \(0\)

交换一对 \(a_i,a_j\mid i\ne j\) 显然不改变行列式的值,因此可以任意重排 \(a\),假定按 \(\text{dfs}\) 序排列

\(f_u\) 表示取 \(a\) 在子树 \(u\) 内的区间计算出的行列式的值

考虑加入一个儿子 \(v\) 后对 \(f\) 的影响

\((v)_{a\times b}\) 表示大小为 \(a\times b\) 的全 \(v\) 矩阵,用 \(M_{[a,b]}\) 表示矩阵 \(M\)\(a\)\(b\) 行的部分,空白表示这部分为 \(0\)

设加入 \(v\)\(f_u\) 对应的方阵为 \(A_{x\times x}\)\(v\) 对应方阵为 \(D_{y\times y}\),令 \(p\) 为结点 \(u\) 的权值,则加入 \(v\) 后的矩阵为 \(\begin{bmatrix}A&(p)_{x\times y}\\(p)_{y\times x}&D\end{bmatrix}\)

显然

\[\begin{aligned} &\det \begin{bmatrix}A&(p)_{x\times y}\\(p)_{y\times x}&D\end{bmatrix}\\ =&\det \begin{bmatrix}A&(p)_{x\times y}\\(p)_{(y-1)\times x}&D_{[1,y-1]}\\(p)_{1\times x}&D_{[y,y]}\end{bmatrix}\\ =&\det \begin{bmatrix}A&(p)_{x\times y}\\(p)_{(y-1)\times x}&D_{[1,y-1]}\\&D_{[y,y]}-(p)_{1\times y}\end{bmatrix} +\det \begin{bmatrix}A&(p)_{x\times y}\\(p)_{(y-1)\times x}&D_{[1,y-1]}\\(p)_{1\times x}&(p)_{1\times y}\end{bmatrix}\\ \end{aligned} \]

第二个

\[\begin{aligned} &\det \begin{bmatrix}A&(p)_{x\times y}\\(p)_{(y-1)\times x}&D_{[1,y-1]}\\(p)_{1\times x}&(p)_{1\times y}\end{bmatrix}\\ =&\det \begin{bmatrix} A_{[1,1]}&(p)_{1\times y}\\ A_{[2,2]}&(p)_{1\times y}\\ \vdots&\vdots\\ A_{[x,x]}&(p)_{1\times y}\\ (p)_{1\times x}&D_{[1,1]}\\ (p)_{1\times x}&D_{[2,2]}\\ \vdots&\vdots\\ (p)_{1\times x}&D_{[y-1,y-1]}\\ (p)_{1\times x}&(p)_{1\times y}\end{bmatrix}\\ =&\det \begin{bmatrix} A_{[1,1]}-(p)_{1\times x}&\\ A_{[2,2]}-(p)_{1\times x}&\\ \vdots&\\ A_{[x,x]}-(p)_{1\times x}&\\ &D_{[1,1]}-(p)_{1\times y}\\ &D_{[2,2]}-(p)_{1\times y}\\ &\vdots\\ &D_{[y-1,y-1]}-(p)_{1\times y}\\ (p)_{1\times x}&(p)_{1\times y}\end{bmatrix}\\ =&\det \begin{bmatrix} A-(p)_{x\times x}&\\ &D_{[1,y-1]}-(p)_{(y-1)\times y}\\ (p)_{1\times x}&(p)_{1\times y}\end{bmatrix}\\ =&p\det \begin{bmatrix} A-(p)_{x\times x}&\\ &D_{[1,y-1]}-(p)_{(y-1)\times y}\\ (1)_{1\times x}&(1)_{1\times y}\end{bmatrix}\\ =&p\det \begin{bmatrix} A-(p)_{x\times x}&\\ &D_{[1,y-1]}-(p)_{(y-1)\times y}\\ &(1)_{1\times y}\end{bmatrix}\\ \end{aligned} \]

第一个

\[\begin{aligned} &\det \begin{bmatrix}A&(p)_{x\times y}\\(p)_{(y-1)\times x}&D_{[1,y-1]}\\&D_{[y,y]}-(p)_{1\times y}\end{bmatrix}\\ =&\det \begin{bmatrix}A&(p)_{x\times y}\\ (p)_{(y-2)\times x}&D_{[1,y-2]}\\ (p)_{1\times x}&D_{[y-1,y-1]}\\ &D_{[y,y]}-(p)_{1\times y} \end{bmatrix}\\ =&\det \begin{bmatrix}A&(p)_{x\times y}\\ (p)_{(y-2)\times x}&D_{[1,y-2]}\\ &D_{[y-1,y-1]}-(p)_{1\times y}\\ &D_{[y,y]}-(p)_{1\times y} \end{bmatrix} +\det \begin{bmatrix}A&(p)_{x\times y}\\ (p)_{(y-2)\times x}&D_{[1,y-2]}\\ (p)_{1\times x}&(p)_{1\times y}\\ &D_{[y,y]}-(p)_{1\times y} \end{bmatrix}\\ =&\det \begin{bmatrix}A&(p)_{x\times y}\\ (p)_{(y-2)\times x}&D_{[1,y-2]}\\ &D_{[y-1,y]}-(p)_{2\times y}\\ \end{bmatrix} +p\det \begin{bmatrix}A-(p)_{x\times x}&\\ &D_{[1,y-2]}-(p)_{(y-2)\times y}\\ &(1)_{1\times y}\\ &D_{[y,y]}-(p)_{1\times y} \end{bmatrix}\\ \end{aligned} \]

从而最初的

\[\begin{aligned} &\det \begin{bmatrix}A&(p)_{x\times y}\\(p)_{y\times x}&D\end{bmatrix}\\ =&\det \begin{bmatrix}A&(p)_{x\times y}\\ (p)_{(y-2)\times x}&D_{[1,y-2]}\\ &D_{[y-1,y]}-(p)_{2\times y}\\ \end{bmatrix} +p\det \begin{bmatrix}A-(p)_{x\times x}&\\ &D_{[1,y-2]}-(p)_{(y-2)\times y}\\ (1)_{1\times x}&(1)_{1\times y}\\ &D_{[y,y]}-(p)_{1\times y} \end{bmatrix} +p\det \begin{bmatrix} A-(p)_{x\times x}&\\ &D_{[1,y-1]}-(p)_{(y-1)\times y}\\ &(1)_{1\times y}\end{bmatrix}\\ =&\cdots\\ =&\det \begin{bmatrix}A&(p)_{x\times y}\\ &D-(p)_{y\times y}\\ \end{bmatrix} +p\sum_{i=1}^y \det \begin{bmatrix}A-(p)_{x\times x}&\\ &D_{[1,i-1]}-(p)_{(i-1)\times y}\\ &(1)_{1\times y}\\ &D_{[i+1,y]}-(p)_{y-i\times y} \end{bmatrix}\\ =&\det A \det(D-(p)_{y\times y}) +p \det(A-(p)_{x\times x}) \sum_{i=1}^y\det \begin{bmatrix} D_{[1,i-1]}-(p)_{(i-1)\times y}\\ (1)_{1\times y}\\ D_{[i+1,y]}-(p)_{y-i\times y} \end{bmatrix}\\ \end{aligned} \]

\(g_u\) 表示 \(f_u\) 对应行列式中将一行替换为 \(1\),所有 \(sz_u\) 种可能得到的行列式的值之和

则加入一个 \(v\) 时,先将子树 \(v\) 内所有点的权值减去 \(p\),算出 \(f_v,g_v\),然后 \(f_u\gets f_u\times f_v+pg_vF,g_u\gets g_u f_v+Fg_v\),其中 \(F\) 为之前所有 \(f_v\) 之积

特殊处理一下 \(u\) 本身的贡献即可

时间复杂度 \(O(n)\)

代码

参考

QOJ #9220. Bus Analysis

令两种操作代价减半,变成 \(1\)\(3\),最终答案乘以 \(2\) 即可

对于一个确定的序列,令 \(f_{i,j}\) 表示到第 \(i\) 个点位置,覆盖前面所有点,代价为 \(j\),向后还能延伸的长度的最大值,转移是容易的

对于一个 \(i\),令 \(x\) 表示覆盖至 \(i\) 的最小代价,显然只有 \(x,f_{i,x},f_{i,x+1},f_{i,x+2}\) 有用,在 \(dp\) 过程中动态统计 \(x\) 的总贡献,并把 \((f_{i,x},f_{i,x+1},f_{i,x+2})\) 记为一个状态

\(f_{i,(a,b,c)}\) 表示前 \(i\) 个达到状态 \((a,b,c)\) 的方案数,初始 \(f_{0,(0,0,0)}=1\)

对于 \(f_{i-1,(a,b,c)}\),令 \(v=f_{i-1,(a,b,c)}\) 为方案数,令 \(a,b,c\) 都减去 \(t_i-t_{i-1}\) 然后对 \(0\)\(\max\),然后 \(b\gets \max(b,a+20),c\gets \max(c,b+20)\),令 \(d\gets \max(c+20,a+75)\)

若删去当前点,则 \(f_{i,a,b,c}\) 加上 \(v\)

若不删去,若 \(a>0\) 则最小值不变,\(f_{i,a,b,c}\) 再加上 \(v\),否则最小值加一,将 \(v\times 2^{n-i}\) 计入答案,然后 \(f_{i,b,c,d}\) 加上 \(v\)

总时间复杂度 \(O(nv^3)\),其中 \(v=75\),常数极小

代码

参考

\(\textcolor{purple}\odot\) P9447 [ICPC 2021 WF] Spider Walk

\(\text{dis}(i,j)\) 表示环上的距离

从外向内枚举所有给定的边,令 \(f_u\) 表示目前为止走到 \(u\) 所需额外增加的最小边数,初始 \(f_i=\text{dis}(i,s)\),设目前加入的边连接 \((x,y)\mid y=x\bmod n+1\),则交换 \(f_x,f_y\),并对于 \(x,y\),分别更新和向外更新

更新本身时,\(f_x\gets \min(f_x,f_i+\text{dis}(i,x))\),实际上由于除了 \(f_x,f_y\) 外任意 \(i,j\) 满足 \(|f_i-f_j|\le \text{dis}(i,j)\),因此假设从 \(x\) 在环上的对面处断开环,对于 \(x\) 左侧的 \(i\),必有 \(f_i+\text{dis}(i,x)\ge f_{x-1}+\text{dis}(x-1,x)=f_{x-1}+1\),右侧同理,即只需要取 \(x\) 在环上左右两个位置更新之即可,\(y\) 同理

向外更新时 \(f_i\gets \min(f_i,f_x+\text{dis}(i,x))\)\(y\) 同理

向外更新可以拆分为区间 \(f_i\)\(i-v\)\(\min\) 和对 \(i+v\)\(\min\),线段树维护即可

总时间复杂度 \(O(n+m\log n)\)

代码

参考

posted @ 2025-09-11 07:59  Hstry  阅读(6)  评论(0)    收藏  举报