省选联测31-36
省选联测36
树的解构
发现砍掉一个点的入边时,该点有 \(1\) 的概率做贡献,该点儿子节点有 \(\frac{1}{2}\) 的概率做贡献,该点的孙子节点有 \(\frac{1}{2}\times \frac{2}{3}\) 的概率做贡献,转化贡献方式,设根节点深度为 \(0\) ,则一个点 \(u\) 的贡献为 \(H(dep_u)\),其中 \(H(n)\) 为调和级数
小 T 与灵石
每次操作对点的贡献 \(f(u)\) 相当于给出的点集直径中心到点 \(u\) 的距离加直径一半 最后跑多源最短路即可
小 S 埋地雷
太神了,咕了
省选联测35
空洞骑士专场
遗忘十字路
每次均摊,再维护多选一次的最大贡献即可,因为均摊剩余的一定不到儿子个数,所以一定够用
鹿角虫道
大大力状压,预处理一个 \(h[s]\) 表示点集 \(s\) 构成一个环的方案数,\(f[s][c]\) 表示把点集 \(s^c\) 挂在点集 \(c\) 上的方案数,\(g[s]\) 表示以点集 \(s\) 中编号最小的点为根,其他点都跟它直接相连的答案,\(ans[s]\) 表示答案,大力转移即可
生命血
拟阵,搞不懂,咕了
省选联测34
大订单
大大力状压,每次按顺序加入一个数考虑其是否另开一段,二进制,三进制,二倍二进制都会寄掉,用四进制卡常硬卡
省选联测33
李四
方法一:预处理每个可用点集里每个点是否可到达,可以用并查集,用递推方式处理集合 \(s\) ,假如集合 \(s'\) 只比 \(s\) 少了一个元素 \(x\),那么最多只用加入 \(n\) 条边,预处理复杂度 \(\mathcal{O}(n2^n)\),该做法空间时间常熟都巨大无比,并查集数组得开char或者状压掉
方法二:和chino的预处理思想相同,根据不合法就不会转移到最终状态(跟连续段dp相似?),认为只要这个点周围有可用点这个点就可以被到达,发现非法一定转移不到最终状态(被封里面最后一个点无法转移),然后去掉预处理也可以搞))
王五
出现的长度只有 \(\sqrt{m}\) 种,每种长度扫一遍用桶统计即可
赵六
Dag 上支配树即可
省选联测32
光明
发现 \(f\) 的值最大不过 \(n\),开桶统计,对每个点维护距离它距离为某一距离的点的数量,用深度之差做到差分,具体来讲,当某一处位置的值增多,就对原来的值和之后的值的桶做修改,用长剖合并可以做到 \(O(n)\),其实启发式合并跑出来就是长剖)))
游戏
大力生成函数,用差分形式或者看成不断卷积都行,式子差不多,最后大力提取系数,对 \(n/k\) 的值分治即可,exLucas 或者矩阵快速幂
省选联测31
西克
从下到上可以乱搞,但是从上到下就烷基八氮,树剖思想存起来经过路程,每条链上二分即可,预处理提前倍增点 \(i\) 改变 \(2^j\) 次颜色后在哪个点,正反都处理一遍
二分和倍增依据是 \(dfn\) 序连续保障结果一定还在链上
苯为
列示再转化即可,具体忘了
总结
从 \(Kaguya\) 大佬身上学到的一点经验:
树剖是一种思想,是一种类似于分块的思想,是一种把树上路径分段处理以达到均摊复杂度的思想
再某些要求下的预处理上可以达到非常好的效果