【树上背包】CF1856E1 PermuTree (easy version) 题解

发布时间 2023-10-18 09:29:22作者: Pengzt

CF1856E1

发现题目的要求只需要相对的大小关系,考虑一个子树时,不妨令子树内部编号连续。类似于一个 dp,这样也可以更好地将信息由儿子转移到父亲。

\(u\) 的孩子为 \(v_1,v_2,\dots,v_k\)。由于每棵子树内的编号是连续的,令以 \(v_i\) 为根的子树的编号为 \([l_i,l_i+siz_{v_i}-1]\)\(siz\) 为子树的大小。令 \(l_i<l_j(i<j)\)

容易发现此时可以将 \(v_1\sim v_k\) 分为两个互不相交集合 \(\{S_1\},\{S_2\}\),令 \(sum(\{S\})\) 表示 \(\sum siz_{v_i} (i\in \{S\})\) 则这棵子树的答案显然为 \(\max(sum(\{S_1\})\times sum(\{S_2\}))\)

这是枚举每个值是否能够用某些 \(siz\) 的值表示出来,然后判一下即可,这可以用背包解决。

时间复杂度:\(\mathcal{O}(n^2)\)

评测记录