CF814E An unavoidable detour for home

  • 原题链接: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)  评论(0编辑  收藏  举报