[LOJ 6159] 最长树链】的更多相关文章

看到要求gcd不为1所以肯定在这条答案链上都是一个质数的倍数,所以就会产生一个很暴力的想法 没错,正解就是这样的暴力 只让走是i(素数)倍数的点,作最长链 最长链可以树形dp或两遍bfs,一遍找端点,一遍过长度即可 复杂度:未证 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<map> #include<queue>…
题目描述 Mr. Walker 最近在研究树,尤其是最长树链问题.现在树中的每个点都有一个值,他想在树中找出最长的链,使得这条链上对应点的值的最大公约数不等于1.请求出这条最长的树链的长度. 输入格式 第一行一个整数 n,表示点的个数. 接下来 n−1 行,每行两个整数 x,y 表示 x,y 之间有边. 数据保证给出的是一棵树. 接下来一行 n 个整数表示每个点对应的权值 ai​. 输出格式 输出一个整数,表示这条树链的长度. 样例 样例输入 4 1 2 1 3 2 4 6 4 5 2 样例输出…
https://ac.nowcoder.com/acm/problem/13233 链接:https://ac.nowcoder.com/acm/problem/13233来源:牛客网 题目描述 树链是指树里的一条路径.美团外卖的形象代言人袋鼠先生最近在研究一个特殊的最长树链问题.现在树中的每个点都有一个正整数值,他想在树中找出最长的树链,使得这条树链上所有对应点的值的最大公约数大于1.请求出这条树链的长度. 输入描述: 第1行:整数n(1 ≤ n ≤ 100000),表示点的个数. 第2~n行…
题目大意: 给你一棵带点权的树,找出一个最长的树链满足链上点权的最大公因数不为1. 思路: 暴力DP. 对于每个点,记录一下以这个点为一个端点的所有链的最大公因数及长度. 然后暴力转移一下,时间复杂度O(n^2logn),不过中间有一些情况是可以舍掉的,做不满. 本来是想试试这样暴力能拿多少分的,没想到直接A掉了. #include<cstdio> #include<cctype> #include<vector> #include<hash_map> in…
按照题解的做法,对于每一个质约数分别进行讨论最长链就行 对于每一个数的质约数可是比logn还要小的 比赛的时候没人写,我也没看 = =,可惜了,不过我当时对于复杂度的把握也不大啊 #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #include <algorithm> #include <iostream> #include <ma…
水一水 枚举各个质数,把是这个数倍数的点留下,跑直径,没了 #include <bits/stdc++.h> using namespace std; int h,t,n,p,q,M,N; ],lis[],fir[],nex[],to[]; vector<]; map<int,int> ma; bitset<> vis,ok,v; void add(int p,int q) { to[++M]=q;nex[M]=fir[p];fir[p]=M; } int bfs…
hdu4871 Shortest-path tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 130712/130712 K (Java/Others) Total Submission(s): 382    Accepted Submission(s): 115 Problem Description Given a connected, undirected graph G, a shortest-path tree r…
LOJ#139. 树链剖分 题目描述 这是一道模板题. 给定一棵$n$个节点的树,初始时该树的根为 1 号节点,每个节点有一个给定的权值.下面依次进行 m 个操作,操作分为如下五种类型: 换根:将一个指定的节点设置为树的新根. 修改路径权值:给定两个节点,将这两个节点间路径上的所有节点权值(含这两个节点)增加一个给定的值. 修改子树权值:给定一个节点,将以该节点为根的子树内的所有节点权值增加一个给定的值. 询问路径:询问某条路径上节点的权值和. 询问子树:询问某个子树内节点的权值和. 输入格式…
  2020/4/30   15:55 树链剖分是一种十分实用的树的方法,用来处理LCA等祖先问题,以及对一棵树上的节点进行批量修改.权值和查询等有奇效. So, what is 树链剖分? 可以简单的理解为,将一棵树分成许多条不相交的链,每次我们只要得知链首,便可对该条链上所有的点用数据结构(like 线段树)进行相关操作 . 首先,介绍最常用的轻重链剖分. 明确最常用的轻重链概念: 重儿子:父亲节点的所有儿子中子树结点数目最多(size最大)的结点: 轻儿子:父亲节点中除了重儿子以外的儿子:…
#139. 树链剖分 题目描述 这是一道模板题. 给定一棵 $n$个节点的树,初始时该树的根为 111 号节点,每个节点有一个给定的权值.下面依次进行 $m$ 个操作,操作分为如下五种类型: 换根:将一个指定的节点设置为树的新根. 修改路径权值:给定两个节点,将这两个节点间路径上的所有节点权值(含这两个节点)增加一个给定的值. 修改子树权值:给定一个节点,将以该节点为根的子树内的所有节点权值增加一个给定的值. 询问路径:询问某条路径上节点的权值和. 询问子树:询问某个子树内节点的权值和 输入格式…