A
\(n\) 个点,有 \(m\) 种操作 \((w,l,r)\),代表贡献是 \(w\),并消除 \([l,r]\) 的所有点。
操作的条件是必须消除一个点,问最多的贡献是多少。\(n,m\le 300\).
考虑从小区间开始操作,不难联想到区间 dp。\(dp_{i,j}\) 代表 \([l,r]\) 都被消除的最大贡献。
对于 \(dp_{i,j}\),我们枚举最后消除那个点是 \(k\),我们要选一个区间穿过 \(k\) 的,且贡献最大。
这个区间是可以预处理,设其贡献为 \(g_{i,j,k}\).
那么 \(dp_{i,j}=\max(dp_{i,k-1}+g_{i,j,k}+dp_{k+1,j})\).
B
一棵树,\(q\) 次操作,每次给子树点染色,一个点可以有多种颜色,
一个点的贡献是其颜色的数量,询问是子树内贡献和。\(n\le 1e5\)。
考虑每种颜色维护一个 set,代表当前颜色“极大”的子树。
然后区间加,区间查询就完了。
C
P5853
标签:LGJ,颜色,15,贡献,2023.2,消除,区间,一个点,dp From: https://www.cnblogs.com/Simon-Gao/p/18016022