长链剖分&DP

长链剖分优化DP

长链剖分

有一些美妙的性质

  • 一个点跳到根最多经过\(\sqrt n\)条链

    向上跳链,链长一定会增加,最坏是\(1,2,3,...,\sqrt n\)

  • 所有长链的总链长相加为n(如说)

优化DP

如果dp中有一维和深度有关,就考虑优化,考虑用长儿子\(O(1)\)转移(一般是平移,考虑用指针),其他暴力转移

分析一下空间复杂度,因为一条长链公用一个数组,所以空间是链的总长n

时间复杂度,一条链只有在链顶暴力转移一次,单次复杂度是\(O(链长)\),所以总时间复杂度是\(O(n)\)

与之类似的DSU(可以维护dp有一维和子树大小有关)

posted @ 2024-02-22 20:58  zhy_learn  阅读(46)  评论(0编辑  收藏  举报