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)=sumlimits_{xin S_i}dfrac{f(x)}{operatorname{deg}(x)}
]
特殊的,
[f(1)=1+sumlimits_{xin S_1}dfrac{f(x)}{{
m 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+lleq a_i+j,lleq j}{f(k, l)}+1
]
发现是个三维偏序。可以上二维树状数组/线段树或者CDQ。
V.P4072 [SDOI2016]征途
先推式子。
[displaystyle vm^2=msumlimits_{i=1}^m(x_i-overline{x})^2=m(sum_{i=1}^mx_i^2-2sum_{i=1}^m x_ioverline x+sum_{i=1}^moverline x^2)=msum_{i=1}^mx_i^2-(sum_{i=1}^mx_i)^2
]
因此我们要最小化(sumlimits_{i=1}^mx_i^2),其中,(x_i)表示第(i)天行走的路程。
接着就是套路的整数划分问题了。
[f(i,j)=min_{k<i}{f(k,j-1)+({
m sum}_i-{
m sum}_k)^2}
]
时间复杂度(Theta(N^3)),考虑斜率优化。
[f(k_1,j-1)+({
m sum}_i-{
m sum}_{k_1})^2<f(k_2,j-1)+({
m sum}_i-{
m sum}_{k_2})^2iff frac{f(k_1,j-1)+sum_{k_1}^2-(f(k_2,j-1)+sum_{k_2}^2)}{{
m sum}_{k_1}-{
m sum}_{k_2}}<2{
m sum}_i
]
也就是要维护一个下凸包。单调队列做一下就好了。