CF814E An unavoidable detour for home

  • 原题链接:CF814E An unavoidable detour for home
  • 听说有加强版(n leq 500),要求(O(n^3))
  • 原题(nleq 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))
原文地址:https://www.cnblogs.com/y-dove/p/14746939.html