NOIP2025T4

定长分块模版题其实是,想到之后,分讨一下跨不跨块即可,\(O(nq)\),启示是,如果对区间长度有限制,可以考虑定长分块

NOIP2025T3

考虑\(n \leq 360\)

直接计算mex是不现实的,一个贪心的想法是,每个点放mex+1,发现,问题是,可能会让一整个子树没有贡献

那这样,让每个点选择一个祖先,放ta要的mex即可,所以设计状态\(f_{u,j,k}\)表示,u子树内,mex为j,还有k个待使用的节点

转移容易,48pts

接下来是最重要的一步

考虑这个m怎么用呢,肯定想办法扔进状态了,然后,考虑把取max改成,指定一个儿子,一定不劣

这样会形成一个类似树剖的结构,考虑每个点可以对祖先的一个点到链顶+1,然后肯定选最长的

对着这个DP,令\(f_{u,j,k}\)表是,u,钦定上面链长j,最长链长k,maxval

减少状态

\(f_{u,j}\)表示,u,最长链j方案,转移考虑枚举叶子,发现,这个链,一段的j是当前j,剩下的递增

考察这个关键点,发现,直接枚举关键点后,上面一段是链求和,然后关键点以下是难的

考虑直接设一个新状态,\(g_{u,j}\)u,当前j就是最长链长,max

转移和上面一样,fenwick维护

\(O(nmlogn)\)

posted on 2026-08-22 22:58  Grylls_117  阅读(5)  评论(0)    收藏  举报