狂粉司公子!
T1
拓展的汉诺塔问题。
先取下来i个盘子,利用j个柱子放到另一个柱子上,最少的步数记为 (f[i][j]) 。随后将剩下 (n-i) 个盘子利用 (j-1) 个盘子挪过去,步数为 (f[n-i][j-1]) ,然后再用 (f[i][j]) 步把刚开始的那 i 个盘子挪上去。
可以得到 (f[n][m] = min(2f[i][m] + f[n-i][m-1]))
T2
显然最小的后缀一定是 'a' 开头。看它与后面的那个同去掉首字母的大小,判断是否需要往下换字母即可,正确性不太清楚。
T3
考虑设 f[u] 为从 u 走到 fa[u] 的期望步数,可以得到 (f[u] = deg + sum f[v]) 。
设 g[u] 为从 fa[u] 走到 u 的期望步数,可以得到 (g[v] = sumlimits_{v eq V}f[V] + g[u] + deg = f[u] + g[u] - f[v])
然后树上前缀和简单处理一下就好了。