2024.2.15 LGJ Round

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

posted @ 2024-02-15 10:43  s1monG  阅读(18)  评论(0)    收藏  举报