csp-s91 T2 Cicada与排序

颓到了yzh的正常版dp定义和讲解

考虑题目随机的部分在于相同数之间的选择,要求的部分是最终的位置

由于总体考虑复杂且n比较小考虑对每个数去跑归并,设g[i][j]表示左右指针分别在i,j的概率

那么局面发生的概率就得知并且该放哪个数也可得知

再设一个f数组用来求答案,f[i][j]表示对于编号为i的分治节点当前处理的数放在j的概率

到着推一开始f[k][pos]=1;   那么f[k][i-1+j-mid][j]=f[k<<1][i]*g[i][j]*fir+f[k<<1|1][j]*g[i][j]*sec;

fir和sec由比较结果确定是0.5还是1或0。

 

将局面发生的概率确定下来

复杂情况下考虑固定一种情况来做

不要memset,f数组很大且有无用内存。

posted @ 2019-11-01 11:07  three_D  阅读(167)  评论(0编辑  收藏  举报