摘要: 树形DP。设dp[u][x]表示,u的所有祖先(不含u)对u的贡献和为x时,u的子树内最少还需要进行多少次操作。设u和它的祖先的贡献和为y。则dp[u][x]可以从sum(dp[v][y]) + [y!=x] 转移过来。x可能很大,不过可以证明,我们只需要考虑所有l,r这些端点。所以离散化一下即可 阅读全文
posted @ 2020-08-14 19:22 duyiblue 阅读(228) 评论(0) 推荐(0) 编辑
摘要: dp[i]表示考虑了前i个,且第i个是某一段结尾,获得的最大总价值。dp[i]可以从dp[i-R ~ i-L]转移过来,可以用单调队列维护这样的区间。做前缀和后,对每个前缀和的值(-n~n共2n+1个值)开一个单调队列。用线段树维护这些单调队列(每个叶子节点上是一个单调队列的最优值)。转移时做区间最大值查询即可。 阅读全文
posted @ 2020-08-14 15:21 duyiblue 阅读(273) 评论(0) 推荐(0) 编辑