题意
传送门 Codeforces 914E Palindromes in a Tree
题解
一个字符串存在一个回文串排列,当且仅当字符串中出现次数为奇数的字符不超过一个。以 v v v 为根, a u a_u au 代表根到节点 u u u 间字母的奇偶性,则通过 v v v 的路径 u → w u\rightarrow w u→w 可以表为 a u ⊕ a w ⊕ a v a_u\oplus a_w\oplus a_v au⊕aw⊕av。
考虑点分治。每次处理仅考虑通过重心的路径。对于重心,依次考虑子树贡献。对于非重心 u u u,这样的路径的一个端点必然在 u u u 的子树内,递归相加即可。总时间复杂度 O ( 20 n log n ) O(20n\log n) O(20nlogn)。
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
constexpr int C

文章介绍了Codeforces914E问题的解决方案,该问题涉及到字符串的回文串排列。主要思想是利用点分治策略,通过计算路径上字符的奇偶性来判断是否形成回文串,复杂度为O(20nlogn)。文章提供了C++代码实现。
最低0.47元/天 解锁文章
239

被折叠的 条评论
为什么被折叠?



