06 2018 档案

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