摘要:
P6177 Count on a tree II/【模板】树分块 树分块板题。 树分块有很多种形式,可以按结点个数分块,深度分块...各有优劣。 具体可以看这里。 这里用的是按结点个数分块。 那么就可以这样来处理每一个询问: 设 \(u`\) 为 \(u\) 的块的根 ,\(v'\) 为 \(v\) 阅读全文
摘要:
P4008 [NOI2003] 文本编辑器 动态插入字符,动态删除字符,输出一个区间的字符串。 很明显可以直接用平衡树维护,当然也可以分块。 平衡树可以用 FHQTreap或者Splay ,这里用的是前者。 每次操作都可以看成分裂然后合并即可。 代码: #include <bits/stdc++.h 阅读全文
摘要:
P5443 [APIO2019]桥梁 和P3247 [HNOI2016]最小公倍数很像。 对于边来说同样是两维限制,但是时间轴已经自动有序。 所以我们还是可以考虑分块。 对于当前块内的询问,首先我们把所有在当前不需要改变的边存下来,然后对于每一个询问可以双指针扫描即可,对于当前块内的边,每次询问的时 阅读全文
摘要:
P3247 [HNOI2016]最小公倍数 先考虑如果只有一个限制该怎么做。 一个简单的思路就是离线下来,然后排序过后双指针扫描加边和处理询问即可,用并查集维护。 或者每次询问的时候都暴力遍历所有边然后并查集。 那么现在有了两个限制,单独并不好做 考虑优化这个过程,我们可以先按 \(a\) 排序然后 阅读全文