杂题

题意

给定\(n\),需要从\(0\)走到\(n\),从\(i\)走到\(i+1\)成功的概率为\(p_i\),如果不成功则返回\(0\),不管成功与否均会花费一个单位的时间
幸运的是,可以放入\(K\)个读档器,若在\(i\)处失败了,只需要返回\(j\le i\)的读档器\(j\)\(0\)位置本身可以看做一个读档器)
问从\(0\)走到\(n\)的最小期望时间
本题的\(p_i\)给出的方法较为特殊,输入\(F_0,F_1,\cdots,F_{n}\)\(p_i=F_{i+1}/F_i\)

\(n\le 10^5,K\le min(n,50),F_0\ge F_1\ge \cdots\ge F_{n}\)

做法

结论1:若\(K=0\),则从\(0\)走到\(n\)的期望时间为\(\frac{\sum\limits_{i=0}^{n-1}F_i}{F_n}\)

证明:
\(ans=1+\sum\limits_{i=0}^{n-2}(\prod\limits_{j=0}^i p_j)+(1-\prod\limits_{i=0}^{n-1}p_i)ans\)

\(cost(l,r)=\frac{\sum\limits_{i=l}^{r-1}F_i}{F_r}\)
\(f(i,j)\)为放了\(j\)个读档器,其中第\(j\)个在位置\(i\),从\(0\)走到\(i\)的最小期望时间

\[f(i,j)=\min\limits_{k}\{f(k,j-1)+cost(k,i)\} \]

结论2:对于任意\(a<b<c<d\),有\(cost(a,c)+cost(b,d)\le cost(b,c)+cost(a,d)\)

于是可以通过分治解决,复杂度\(O(Knlogn)\)

posted @ 2020-11-24 10:55  Grice  阅读(83)  评论(0编辑  收藏  举报