我们知道只要误入歧途你就再也不能回到正轨了,只能走到错误叶子然后读档
那么我们先求出g[i]代表在i误入歧途之后期望要走多远才会读档
然后求出dis[i][j]代表在i存档之后从i走到j中间不存档期望要走多少步
这个n^2随便求
那么我们可以DP,f[i][j]表示从起点走到i,并在i存档,当前一共已经存档j次的最优期望步数
直接转移显然是n^2p的
我们发现题目限制了每个点的度数>=2
那么根据求dis的式子我们可以看出在i固定的情况下,dis是一个指数增长的函数,而误入歧途对答案的影响只是常数级的,那么我们猜测转移的时候相邻两个存档点的距离不会太长,大概应该是n/p级别的,然后复杂度就变成n^2了
#include<iostream>
#include<cstring>
#include<ctime>
#include<cmath>
#include<algorithm>
#include<iomanip>
#include&