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)\)
浙公网安备 33010602011771号