设(f[i][j])代表至少有(i)行(j)列满足条件,期望还有多少次结束
四种转移很简单,转移到自身的那个移一下项即可
设(f[i])代表从(i)到(n)的最优期望时间
设(a[i])代表第(i)小的(f)所对应的点
则有:(f[a[i]]=sumlimits_{j=1}^{i}f[a[j]]*p[a[i]][a[j]]*prodlimits_{k=1}^{j-1}(1-p[a[i]][a[k]]))
意思就是走最小的通路
没有通路就停在原处((p[i][i]=1))
考虑每次选择最小的(f)作为新的(a[i])并动态更新(f)即可
时间复杂度(O(n^2))
考虑把序列变为一个n+1的环
其中有一个点即为坏点,走到这个点就代表着不合法
每个人选定顺时针或者逆时针并且选一个点开始走
每个点都是等价的
答案就是即为(frac{(n+1-m)(2n+2)^m}{n+1})
(dp)出每个点都小于等于(i)的方案数
因为根是最大的,所以限制可以通过规定根选什么来满足
设(g[i])代表至多,(f[i])代表恰好
(f[i]=g[i]-sumlimits_{j=1}^{i-1}f[j])
最后乘上一个组合数便可以对答案贡献
复杂度(O(n^2))
设(f[i][j])代表填了(i)个数,第(i)个是(j)的方案数
(f[i][j]=sumlimits_{k=1}^{m}f[i-1][k]-sumlimits_{k!=j}f[i-a[j]-1][k])
对于同样的(a)转移以及方案数是一样的,只是转移的时候需要对于一样的(a)特殊处理一下