金牌导航刷题小记
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
\]
也就是要维护一个下凸包。单调队列做一下就好了。