金牌导航刷题小记

I.P3232 [HNOI2013]游走

看到求数学期望,情不自禁就想要来一波动态规划。先推转移方程:

\(f(x)\)表示游走到第\(x\)个节点的期望次数\(g(i)\)表示第\(i\)条边被经过的期望次数

对于\(g(i)\),有[1]

\[g(i)=\dfrac{f(u)}{\operatorname{deg}(u)}+\dfrac{f(v)}{\operatorname{deg}(v)},i=(u,v) \]

其中,\(\operatorname{deg}\)表示节点的度数。

考虑如何计算\(f(i)\),先推式子[2]

\[f(i)=\sum\limits_{x\in S_i}\dfrac{f(x)}{\operatorname{deg}(x)} \]

特殊的,

\[f(1)=1+\sum\limits_{x\in S_1}\dfrac{f(x)}{{\rm deg}(x)}\\f(n)=1 \]

状态转移方程显然是有后效性的,怎么办?

注意到\(n\)其实较小,可以\(\Theta(n^3)\)大力高斯消元。

最后按照经过边的期望次数贪心即可。

II.P2605 [ZJOI2010]基站选址

III.P5939 [POI1998]折线

IV.P3287 [SCOI2014]方伯伯的玉米田

直接推式子。

\[f(i, j)=\max_{k<i,a_k+l\leq a_i+j,l\leq j}\{f(k, l)\}+1 \]

发现是个三维偏序。可以上二维树状数组/线段树或者CDQ。

V.P4072 [SDOI2016]征途

先推式子。

\[\displaystyle vm^2=m\sum\limits_{i=1}^m(x_i-\overline{x})^2=m(\sum_{i=1}^mx_i^2-2\sum_{i=1}^m x_i\overline x+\sum_{i=1}^m\overline x^2)=m\sum_{i=1}^mx_i^2-(\sum_{i=1}^mx_i)^2 \]

因此我们要最小化\(\sum\limits_{i=1}^mx_i^2\),其中,\(x_i\)表示第\(i\)天行走的路程。

接着就是套路的整数划分问题了。

\[f(i,j)=\min_{k<i}\{f(k,j-1)+({\rm sum}_i-{\rm sum}_k)^2\} \]

时间复杂度\(\Theta(N^3)\),考虑斜率优化。

\[f(k_1,j-1)+({\rm sum}_i-{\rm sum}_{k_1})^2<f(k_2,j-1)+({\rm sum}_i-{\rm sum}_{k_2})^2\iff \frac{f(k_1,j-1)+sum_{k_1}^2-(f(k_2,j-1)+sum_{k_2}^2)}{{\rm sum}_{k_1}-{\rm sum}_{k_2}}<2{\rm sum}_i \]

也就是要维护一个下凸包。单调队列做一下就好了。

VI.P2467 [SDOI2010]地精部落


  1. 更严谨一些,应当是\(g(i)=[u\not=n]\dfrac{f(u)}{\operatorname{deg}(u)}+[v\not=n]\dfrac{f(v)}{\operatorname{deg}(v)}\) ↩︎

  2. 同样的,式子中的\(x\not=n\) ↩︎

posted @ 2021-04-03 20:18  __allenge  阅读(132)  评论(0编辑  收藏  举报