日记

这是2025年10月24日的日记

周五 10月 24 2025
518 字 · 2 分钟

今天实在是智商不在线。

暗号

其实正常。

dpi,0/1,j,kdp_{i,0/1,j,k} 表示 ii 染色成 0/10/1ii 到根的路径上还要 jj 次两端都为 00 的边,kk 条两端都为 11 的边,ii 子树内的最大士气值。

初始化有 dpi,0,j,k=ai(j+1),dpi,1,j,k=ai(k+1)dp_{i,0,j,k} = a_i(j + 1),dp_{i,1,j,k} = a_i(k + 1)

考虑如何转移。我们考虑 uvu \to v 的一条边应当是染成什么颜色。

  • 染成 00dpu,0,j,kmax(dpv,0,j+1,k,dpv,1,j,k)dp_{u,0,j,k} \gets \max(dp_{v,0,j + 1,k},dp_{v,1,j,k})
  • 染成 11dpu,1,j,kmax(dpv,0,j,k,dpv,1,j,k+1)dp_{u,1,j,k} \gets \max(dp_{v,0,j,k},dp_{v,1,j,k + 1})

最后的答案就是 max(dp1,0,0,0,dp1,1,0,0)\max(dp_{1,0,0,0},dp_{1,1,0,0})

聪聪与可可

以后还是该多做一点这种图上 dp。

我们发现这个猫往哪里走十分的恶心。于是我们预处理一个 nxti,jnxt_{i,j} 表示猫在 ii,老鼠在 jj 的时候,猫往哪里走。可以用 dijkstra O(n2logn)O(n^2 \log n) 预处理。

然后考虑 dp。设 dpi,jdp_{i,j} 表示猫在 ii,老鼠在 jj 的时候的期望步数。边界就是当 ii 能在两步之内走到 jjdpi,j=0dp_{i,j} = 0

考虑如何转移。我们发现在一步走不到老鼠所在地时猫一定会走两步,设 sese 表示猫走两步的地方。所以有 dpi,j=kdpse,kdegj+1dp_{i,j} = \sum_{k}\frac{dp_{se,k}}{deg_j + 1}。最后还要把它加上 dpse,jdegj+1\frac{dp_{se,j}}{deg_j + 1} 表示老鼠不动的情况。

我连这个状态都没想到,实在是得练。

Inversion

由独立集我们可以得到这是一个上升的子序列,由支配集我们可以得到这是一个极长的上升子序列。

直接把 aa 求出来然后 dp 就是了。

Dynamic TSP Problem

唐成啥了。

我们发现 nn 十分的小啊,于是记录 byi,j,bki,jby_{i,j},bk_{i,j} 分别表示如果有 s=i,t=js = i,t = j 的查询时,yykk 最严苛的要求是什么。

然后我们二分 xx,每次 chk 的时候枚举 ii,直接 O(n)O(n) 处理出到 jj 时的钱数和盈利次数,再 O(n)O(n) 检查,如果不符直接 return 0。最终的时间复杂度就是 O(m+n2logV)O(m + n^2 \log V)

后日谈

唐成啥了。


Thanks for reading!

日记

周五 10月 24 2025
518 字 · 2 分钟