/*
floyd 预处理所有点之间的最短距离

状态表示:
f[i][j][0] 表示前i个课程,申请换了j次,且最后一次没申请换的最小期望长度
f[i][j][1] 表示前i个课程,申请换了j次,且最后一次申请交换的最小期望长度

f[i][j][0] 在两种情况西下取最小值即可:
第i-1个课程没申请交换,最小期望是: f[i - 1][j][0] + d[a[i - 1][a[i]]]
第i-1个课程申请交换, 最小期望是:
f[i-1][j][1] + d[a[i - 1]][ai]*(1 - p[i - 1]) + d[b[i - 1]][a[i]] * p[i]

f[i][j][1] 也是同理
f[i][j][1] = f[i-1][j - 1][0] + d[a[i - 1]][a[i]]*(1 - p[i])
            + d[a[i - 1]][b[i]]*p[i];

f[i][j][1] = f[i - 1][j - 1][1] 
            + d[a[i - 1]][a[i]]*(1 - p[i - 1])*(1 - p[i])
            + d[b[i-1]]][a[i]]*p[i - 1]*(1 - p[i])
            + d[a[i - 1]][b[i]]*(1 - p[i - 1])*p[i]
            + d[b[i - 1]][b[i]]*p[i - 1] * p[i] 

初始化 f[1][0][0] = f[1][1][1] = 0;

f[n][i][0]  f[n][i][1] 的最小值即为答案。
*/

0 条评论

目前还没有评论...