Ynoi2010 Fusion tree
使用字典树来维护信息,由于要求的是异或和,所以我们只关心每个位上 1 出现的次数。
要支持:加入一个数,删除一个数,整体加 1。
对于整体加 1,只需要从低到高找到第一个 0,将其变为 1,之后将之后的所有 1 变为 0,对应到字典树上就是交换两个儿子。
对于每个点都开一棵字典树维护子节点的异或和,父节点单独算。
ARC087E Prefix-free Game
把所有 01 串放到字典树上去,存在一个 01 串就相当于从它到根节点的字符都不能够选择。
这样还会剩下若干完全二叉树,通过某种方式得知,深度为 \(d\) 的完全二叉树的 sg 函数值为 \(\text{lowbit(d)}\)。
BZOJ3489 A simple rmq problem
求出每个数在左边出现和在右边出现的位置 \(l_i,r_i\)。
询问 \([ql,qr]\) 要满足 \(l_i<ql\) 和 \(r_i>qr\) 和 \(ql\le i\le qr\)。
发现是个三维问题,直接上 KD-tree。
其他问题
- Désive
- 熟练
- K远点对