题解 CF1294F 【Three Paths on a Tree】】的更多相关文章

题目链接:hdu 4912 Paths on the tree 题目大意:给定一棵树,和若干个通道.要求尽量选出多的通道,而且两两通道不想交. 解题思路:用树链剖分求LCA,然后依据通道两端节点的LCA深度排序,从深度最大优先选.推断两个节点均没被标 记即为可选通道. 每次选完通道.将该通道LCA下面点所有标记. #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #includ…
题目链接 Paths on the tree 来源  2014 多校联合训练第5场 Problem B 题意就是给出m条树上的路径,让你求出可以同时选择的互不相交的路径最大数目. 我们先求出每一条路径(u, v)中u和v的LCA:w,按照路径的w的深度大小deep[w]对所有的路径排序. deep[w]越大,排在越前面. 然后从第一条路径开始一次处理,看c[u]和c[v]是否都没被标记过,如果都没被标记过则我们把这条路径选上,把答案加1. 同时标记以w为根的子树的节点为1,方便后续对c数组的查询…
F. Three Paths on a Tree time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given an unweighted tree with nn vertices. Recall that a tree is a connected undirected graph without cycle…
\[ Preface \] 打比赛的时候先开了 F 题(雾 然后一眼看出 F 题结论,最后居然因为没有判重,交了三次才过. \[ Description \] 给出一棵无权树(可理解为边权为 \(1\) ),你需要选取三个点 \(a,b,c\) ,最大化 \(a,b\) 和 \(b,c\) 和 \(a,c\) 的简单路径的并集的长度. 输出这个最大长度和 \(a,b,c\) . \[ Solution \] 有一个结论: 必定会有一组最优解,使得 \(a,b\) 是树直径上的端点. 这个结论我现…
先说一下dsu算法. 例题:子树众数问题. 给出一棵树,每个点有点权,求每个子树中出现次数最多的数的出现次数. 树的节点数为n,\(n \leq 500000\) 这个数据范围,\(O(n \sqrt n)\)直接莫队会超时. 考虑一种暴力做法: 开一个全局数组,记录每中数的出现次数. 依次对每个点,用dfs遍历它的子树,并记录每种数的出现次数. 遍历结束后,找到众数,记录结果,并清空这个数组,进行下一次遍历. 可以发现,在最坏情况(例如一条链),算法的时间复杂度是\(O(n^2)\)的. 但是…
D. Arpa's letter-marked tree and Mehrdad's Dokhtar-kosh paths CF741D 题意: 一棵有根树,边上有字母a~v,求每个子树中最长的边,满足这个边上的所有字母重拍后可以构成回文 发明者自己出的题...orz 由于本来知道就是dsu on tree,所以还是想出来了 首先点分治是没法做了,这是有根树 写成二进制,两条链合起来构成回文\(\rightarrow\)异或和为0或者只有一位是1 一开始困惑于只处理到当前根的异或和的话,随着当前…
题目来源: https://leetcode.com/problems/binary-tree-postorder-traversal/ 题意分析: 后序遍历一棵树,递归的方法很简单,尝试用非递归的方法. 题目思路: 后序遍历的顺序是,先左子树,再右子树,最后才是根节点.递归的思想很简单,那么非递归的方法也是利用栈来实现,后进先出,不过这里先进的应该是左子树,那么得到的结果是根节点,右子树接着左子树.最后将结果翻转就可以了.代码给的是非递归的方法. 代码(python): # Definitio…
题目来源: https://leetcode.com/problems/binary-tree-preorder-traversal/ 题意分析: 前序遍历一棵树,递归的方法很简单.那么非递归的方法呢. 题目思路: 前序遍历的顺序是先遍历根节点,再遍历左子树,最后遍历右子树.递归的方法很直观.非递归的方法是利用栈来实现,后进先出,先放右子树进入栈.代码给的是非递归的方法. 代码(python): # Definition for a binary tree node. # class TreeN…
题目来源: https://leetcode.com/problems/binary-tree-maximum-path-sum/ 题意分析: 给定一棵树,找出一个数值最大的路径,起点可以是任意节点或者叶子. 题目思路: 我们可以先找路径的最大mr,ml,那么最大值是max(solve(root),solve(left),solve(right), max(mr + root.val + ml, root.val)). 代码(python): # Definition for a binary…
LeetCode 原题链接 Construct Binary Tree from Inorder and Postorder Traversal - LeetCode Construct Binary Tree from Preorder and Postorder Traversal - LeetCode 题目大意 给定一棵二叉树的中序遍历和后序遍历,求这棵二叉树的结构. 给定一棵二叉树的前序遍历和中序遍历,求这棵二叉树的结构. 样例 Input: inorder = [9, 3, 15, 2…