Codeforces Round #316 (Div. 2) D. Tree Requests
题意:
给一棵树,每个节点上都唯一对应一个单词,给M个询问,问节点u的子树中,深度为h的节点上所有的单词以任意次序组合起来能否构成回文串?思路:
【图论|Codeforces Round #316 (Div. 2) D. Tree Requests】首先呢,我们必须得处理出内节点所在的深度,而且得知道对应深度下有哪些节点存于vector数组H[d]中,但是问题就是询问仅涉及到节点为u的子树的哪些节点,所以满足条件的节点应该为数组中的某一段,那么如何去找这一段呢? 利用dfs序+二分查找,就能得到满足条件的节点所对应的区间,剩下的问题就是,如何求是否为回文串,因为次序任意,所以只要出现次数为奇数的单词的个数不超过2就行了,这个肯定是需要去预处理出整个区间的啦,方法就是利用位运算 + 异或 解决!代码如下:
#include
#include
#include
#include
#include
#include
#include