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数组很大且有无用内存。