- 原题链接:CF814E An unavoidable detour for home
- 听说有加强版\(n \leq 500\),要求\(O(n^3)\)
- 原题\(n\leq 50,O(n^5)\)可过这种弱智题是怎么评黑的啊
- 挺简单的一道题,挖掘一下性质可以发现,由于最短路唯一且单调不降,那么构成一棵最短路树且非树边两端只能是同一深度,并且\(dep_{i+1} \ge dep_i\),这启发我们逐层\(dp\)
- 设
dp[i][a1][b1][a2][b2]
为当前\(dp\)到\(i\),上一层还剩\(a1\)个点度数为\(1\),\(b1\)个点度数为\(2\),这层\(a2\)个点度数为\(1\),\(b2\)个点度数为\(2\),转移时每次枚举该点连向哪些点即可
- 时间复杂度\(O(n^5)\)
- 考虑加强版
- 太困了,先咕咕,过两天再来想吧
- 显然一个个转移是没啥前途的,我们考虑逐层转移,设\(dp_{i,a,b}\)为\(dp\)到\(i\),当前层一度点剩\(a\),二度点剩\(b\)的方案数,注意到我们可以先转移上一层对该层的方案,再本层自己转移(两两相连)
- 至于跨层转移,我们注意到下一层的每一个点都只会对上一层连,且若\(a,b\)已经确定,则下一层点数是多少也确定的,我们可以预处理\(g(a,b)\)表示有\(a\)个一度点,\(b\)个二度点,向下一层连有多少种方案,预处理出\(g\)数组,则\(dp\)数组的转移时间复杂度下降到\(O(n^3)\)
posted @
2021-05-08 23:33
y_dove
阅读(
106)
评论()
编辑
收藏
举报