06 2018 档案
摘要:题意: 给出一棵树。两种操作,第一种是询问点u,v路径上的异或和,另一种是改一个点的值。 题解: 维护每个点到根节点的异或和。那么两个点之间的异或和就是两个点分别到根节点的异或和相异或,再异或上他们LCA节点的权值。 对于每次更改,只会影响他的子树到根节点的异或和。所以可以维护DFS序,每次修改一个
阅读全文
摘要:题意: 给出一个带点权的树。q次询问,每次询问给出u和x,求点u的子树中与x异或的最大值。 题解: 将询问离线化。 每颗节点动态建立字典树。每个节点和自己的孩子合并,但是这样会改变子树节点的字典树,所以就在每个节点回溯的时候计算出该节点的答案。 #include <iostream> #includ
阅读全文
摘要:A.Arcade Game(康拓展开) 题意: 给出一个每个数位都不同的数n,进行一场游戏。每次游戏将n个数的每个数位重组。如果重组后的数比原来的数大则继续游戏,否则算输。如果重组后的数是最大的数则算赢,问赢的概率。 题解: 用康拓展开求出n是第几大的数,然后递推后面的概率。 #include <b
阅读全文
摘要:题意: 初始有n个点,m次操作。每次操作加一条边或者询问两个点第一次连通的时刻(若不连通输出-1)。 题解: 用并查集维护每个点所在连通块的根。对于每次加边,暴力的更新新的根。 每次将2个块合并时,将小的块并向大的块。这么合并使得每个点的根最多更新log2n次,并储存每次更新信息(更新时刻以及新的根
阅读全文

浙公网安备 33010602011771号