首页 > 其他分享 >CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths

CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths

时间:2022-10-11 21:33:07浏览次数:81  
标签:paths Dokhtar kosh Mehrdad tree marked dis CF741D

CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths

给定一颗以 \(1\) 为根的树每个节点上有一个 \(a\sim v\) 的小写字母,求每个子树内最长的链的长度,使得链上的字母通过重排成为回文串。 \(n\leq 10^5\) 。

DUS on tree 复健题 。首先考虑到回文串的性质:只有 \(1\) 个或没有出现奇数次的字符,再加上这一题的小写字母只有 \(22\) 个,可以状压一下。然后处理出每个点到根的状压距离 \(dis_i\) (哪些字符有奇数个),然后就有一个朴素的 \(n^2\) 枚举做法(实现不好退化成 \(O(n^3)\) ):因为 \(dis_i\oplus dis_j\) 会将 \(lca(i,j)\) 以上的点全部去掉,所以剩下的部分就是链上的答案。

然后考虑优化算法:先 dfs 一次得出树上每个节点的重儿子,然后维护一个桶:

\[f_i=\max\limits_{dis_j=i\&\&j\in subtree(root)}\{dep_j\} \]

然后先递归求出其他儿子的答案,并清空桶。在求重儿子时不清空桶,直接合并轻儿子的答案。求答案的时候只用搜 \(f_{dis_{j}\oplus (2^k)}\) ,然后最后就取 \(\max\) 即可。

标签:paths,Dokhtar,kosh,Mehrdad,tree,marked,dis,CF741D
From: https://www.cnblogs.com/zhouzizhe/p/16782651.html

相关文章

  • 详解 File、Path、Paths、Files 四个类,Java操作文件不再难
    titleshortTitlecategorytagdescriptionhead详解File、Path、Paths、Files四个类,Java操作文件不再难详解File、Path、Paths、FilesJava核心Ja......
  • 62.unique-paths 不同路径
    问题描述62.不同路径解题思路还是找递推关系:\(dp_{mn}=dp_{(m-1)n}+dp_{m(n-1)}\)代码#include<vector>usingstd::vector;classSolution{public:i......
  • 63.unique-paths-ii 不同路径II
    题目描述63.不同路径II解题思路相比62.不同路径II,主要是多了障碍物地判断,设\(obstacleGrid[i][j]=0\),则\(dp_{{i}{j}}=0\),其余递推关系相同。注意for循环遍历地过......
  • G2. Passable Paths (hard version)-LCA
    G2.PassablePaths(hardversion)https://codeforces.ml/contest/1702/problem/G2题意给你一个树q次询问每次询问一个集合,有m个数\(a_1...a_m\)问这些点组成的路......
  • 62. Unique Paths
    Arobotislocatedatthetop-leftcornerofamxngrid(marked'Start'inthediagrambelow).Therobotcanonlymoveeitherdownorrightatanypointintim......
  • Many Many Paths(组合计数)
    题意给定\(r1,c1,r2,c2\),求\(\sum\limits_{i=r1}^{r2}\sum\limits_{j=c1}^{c2}f(i,j)\),其中\(f(i,j)\)表示从\((0,0)\)往上或者往右走到\((i,j)\)的方案数。题目链......
  • 题解【CF1702G2 Passable Paths (hard version)】
    题目传送门。考虑建立虚树然后再上面搞树形DP。于是这道题就变成分讨题。设\(f_i\)表示\(i\)子树内的答案。若\(f_i=1\),表示\(i\)子树内的特殊点可以被一条链覆......
  • CF1702G2 Passable Paths (hard version)
    PassablePaths(hardversion)给出一棵大小为\(n\)的树,\(q\)次询问,每次给出一大小为\(m\)的点集,判断是否存在一条链覆盖这些点,注意这条链可以经过其他点。\(n,\sum......
  • NIO2中Path、Paths、Files类
             ......
  • CodeForces-1702G Passable Paths
    PassablePathsLCA在树上找到形容一条链,只用找到链的两个端点即可,因此这题的初始想法就是找端点第一个端点:深度最深的地方第二个端点:离第一个端点最远的那个点找到两......