是早就听说过的金牌导航呢。
期望分数
设 f [ i ] f[i] f[i] 表示前 i i i 个数的期望分数,考虑 x x x 个 1 1 1 后面再加入一个 1 1 1 对答案的贡献: ( x + 1 ) 3 − x 3 = 3 x 2 + 3 x + 1 (x+1)^3-x^3=3x^2+3x+1 (x+1)3−x3=3x2+3x+1,那么就要知道 E ( 3 x 2 + 3 x + 1 ) = 3 E ( x 2 ) + 3 E ( x ) + 1 E(3x^2+3x+1)=3E(x^2)+3E(x)+1 E(3x2+3x+1)=3E(x2)+3E(x)+1,注意由于 E ( x ) E(x) E(x) 和 E ( x ) E(x) E(x) 不相互独立,所以 E ( x 2 ) ≠ E ( x ) × E ( x ) E(x^2)\ne E(x)\times E(x) E(x2)=E(x)×E(x),所以要分别维护 g [ x ] = E ( x ) g[x]=E(x) g[x]=E(x) 和 h [ x ] = E ( x 2 ) = h [ x − 1 ] + 2 g [ x − 1 ] + 1 h[x]=E(x^2)=h[x-1]+2g[x-1]+1 h[x]=E(x2)=h[x−1]+2g[x−1]+1 求解。
选书问题
首先列表是从按小到大的顺序排的,但你题面是不是好歹应该说一下啊。
假设一个人的选书列表长度为 l e n len len,那么他选到第 i i i 本书的概率为 s = ∑ k = 0 ∞ ( 1 − p ) k × l e n + i − 1 p s=\sum\limits_{k=0}^{\infty}(1-p)^{k\times len+i-1}p s=k=0∑∞(1−p)k×len+i−1p,把 p p p 提出来化简,得 s = p ( 1 − p ) i − 1 1 − ( 1 − p ) l e n s=\dfrac{p(1-p)^{i-1}}{1-(1-p)^{len}} s=1−(1−p)lenp(1−p)i−1,然后就是树状数组求逆序对了。
图上游走
求总分期望值最小,就是要求每条边经过的期望次数,经过次数越大的赋边权越小一定最优。
求每个点经过的次数用高斯消元就行,考虑把经过边的次数转换成点,假设 i i i 的度为 d [ i ] d[i] d[i],期望经过次数为 f [ i ] f[i] f[i],则可以分讨这条边的经过方向求解: E ( u , v ) = f [ u ] d [ u ] + f [ v ] d [ v ] E(u,v)=\dfrac{f[u]}{d[u]}+\dfrac{f[v]}{d[v]} E(u,v)=d[u]f[u]+d[v]f[v],注意从 1 1 1 出发到 n n n 结束的限制的处理。
--n;//n不计入对边的贡献,所以求前n-1个点的经过次数就行
rep(i,1,n){
a[i][i]=-1.0;
for(int v:g[i]) if(v!=n+1) a[i][v]=1.0/d[v];
if(i==1) a[i][n+1]=-1.0;//从1出发要先把经过次数加一
}
//高斯消元
XOR 和路径
高斯消元里比较类似的一道题?但要是沿用上一题的思路就废了。
首先很容易想到拆位计算,设 f [ x ] f[x] f[x] 为 x x x 到 n n n 当前位有贡献的概率,则 f [ x ] = ∑ ( x , v ) ∈ E ∧ w = 0 f [ v ] d [ x ] + ∑ ( u , v ) ∈ E ∧ w = 1 1 − f [ v ] d [ x ] f[x]=\sum\limits_{(x,v)\in E\land w=0} \dfrac{f[v]}{d[x]}\ +\sum\limits_{(u,v)\in E\land w=1}\dfrac{1-f[v]}{d[x]} f[x]=(x,v)∈E∧w=0∑d[x]f[v] +(u,v)∈E∧w=1∑d[x]1−f[v],高斯消元即可。
注意自环不能加反向边。
关灯游戏
传说中的分手是祝愿,好神仙。
先考虑给定一个序列,求使其全为 0 0 0 的最少操作次数。编号小的数的状态会被它的倍数影响,所以从大往小枚举,发现 1 1 1 就说明它在初始状态的基础上加上它的倍数们的影响之后需要多操作一次,且这个操作无法被其它位置上的操作代替。所以这样求得的一定是最少次数。
随机操作怎么办?利用上面加粗的性质,必须选择指定的点才能使操作次数更少。设 f [ i ] f[i] f[i] 表示 从需要 i i i 次操作到需要 i − 1 i-1 i−1 次操作的期望操作次数,则 f [ i ] = i n + n − i n ( f [ i + 1 ] + 1 + f [ i ] ) f[i]=\dfrac{i}{n}+\dfrac{n-i}{n}(f[i+1]+1+f[i]) f[i]=ni+nn−i(f[i+1]+1+f[i]),可以线性或者多一个 log \log log 求解。根据期望线性性,从当前需要的次数 x x x 到 k k k 的期望操次数即 ∑ i = k + 1 x f [ i ] \sum\limits_{i=k+1}^x f[i] i=k+1∑xf[i]。
彩色圆环
首先显然断环为链。
考虑链的情况,设 f [ i ] f[i] f[i] 表示 i i i 元链的期望答案,枚举 i i i 往前第一个颜色不同的位置 j j j,得到 f [ i ] = ∑ j < i f [ j ] × ( i − j ) × ( m − 1 ) ( 1 m ) i − j f[i]=\sum\limits_{j<i}f[j]\times (i-j)\times(m-1)(\dfrac{1}{m})^{i-j} f[i]=j<i∑f[j]×(i−j)×(m−1)(m1)i−j。
环的区别在于收尾相接处颜色可能相同,设 f [ i ] [ 0 / 1 ] f[i][0/1] f[i][0/1] 为 i i i 元环收尾颜色不相同/相同的期望答案:
- f [ i ] [ 0 ] = ∑ j < i f [ j ] [ 0 ] × ( i − j ) × ( m − 2 ) ( 1 m ) i − j + f [ j ] [ 1 ] × ( i − j ) × ( m − 1 ) ( 1 m ) i − j f[i][0]=\sum\limits_{j<i}f[j][0]\times (i-j)\times(m-2)(\dfrac{1}{m})^{i-j}+f[j][1]\times (i-j)\times(m-1)(\dfrac{1}{m})^{i-j} f[i][0]=j<i∑f[j][0]×(i−j)×(m−2)(m1)i−j+f[j][1]×(i−j)×(m−1)(m1)i−j, m − 2 m-2 m−2 是因为 [ j + 1 , i ] [j+1,i] [j+1,i] 段颜色不能等于 1 1 1 的颜色且不能等于 j j j 的颜色;
- f [ i ] [ 1 ] = ∑ j < i f [ j ] [ 0 ] × ( i − j ) × ( 1 m ) i − j f[i][1]=\sum\limits_{j<i}f[j][0]\times(i-j)\times(\dfrac{1}{m})^{i-j} f[i][1]=j<i∑f[j][0]×(i−j)×(m1)i−j
统计答案的话枚举收尾颜色相同时的颜色段长度 i ∈ [ 1 , n ) i\in[1,n) i∈[1,n),对答案的贡献即为 f [ n − i ] [ 0 ] × i × i × ( 1 m ) i − 1 f[n-i][0]\times i\times i\times (\dfrac{1}{m})^{i-1} f[n−i][0]×i×i×(m1)i−1,注意相同颜色段在环上会有 i i i 种不同的位置选择,要多乘一个 i i i。初始化设为颜色全部相同就不少情况了。
然后注意初始化: f [ 0 ] [ 1 ] = 1 f[0][1]=1 f[0][1]=1。可能直观的是 f [ 1 ] [ 1 ] = 1 f[1][1]=1 f[1][1]=1,但发现转移的时候 f [ 1 ] [ 0 ] f[1][0] f[1][0] 是一定要对后面有贡献的,所以要从 0 0 0 开始推,很神秘。
守卫挑战
关键就是发现背包总容量大于 n n n 的部分都无用,于是就可以朴素 dp 了。
一种比较笨的做法是维护 d p [ i ] dp[i] dp[i] 为得到 i i i 个碎片的概率(显然赢了 i i i 场), f [ i ] [ j ] f[i][j] f[i][j] 为赢 i i i 场所获得的背包总容量为 j j j 的概率,把 f f f 做二维后缀和(?)就可以结合 d p dp dp 数组求答案了。
完结撒花。