树形dp
CaprYang
这个作者很懒,什么都没留下…
展开
-
Educational Codeforces Round 58 (Rated for Div. 2) D. GCD Counting 树形dp 分解质因数
题解题目大意 给你一个n的节点的无向树 每个点都有一个值 问路径上所有节点的gcd>1的最长路径长度考虑2e5内的数字公因数最多7个 2357111317>2e5 素数筛把2e5内所有数字质因子存在vector使用树形dp 自底向上求解 d[i][j]表示使用节点i第j公因子到达叶子的最多顶点 p[i][j]表示使用节点i第j公因子经过i点的最多顶点在DFS回溯后 遍历当前节点...原创 2019-01-17 18:37:54 · 198 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day5 (Div2, onsite) H Nested Tree 树形dp
题解按照题意 将m课树合并为一颗树 题目保证合并后必定为一棵树且端点数量不超过n*m<=1e6 遍历所有节点不会超时使用树形dp d[i]表示以i为根的子树节点数量 使用DFS递归回溯计算d的值 n*m-d[i]表示以d的父节点为根的子节点数量(把树反转过来)则每次把ans加上d[i]*(n*m-d[i])可计算i节点与父节点连接的边对答案的贡献AC代码...原创 2019-01-24 19:37:28 · 333 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day1 (Div2, onsite) E 流流流动 树形dp
题解按照题意将节点之间连线后 每个联通块无环但是整体不一定联通 使用并查集将每个集合都跟0号节点连一根线 建立以0为根的树使用树形dp d[i][0/1]表示以i为根的子树i这个节点1选/0不选的最大收益 DFS从0遍历整棵树回溯后计算d如果不选当前节点x则直接加上子节点y选或者不选 即d[x][0] += max(d[y][0], d[y][1])如果选当前节点x从子节点y转移时候 如果...原创 2019-01-25 17:15:25 · 412 阅读 · 0 评论 -
洛谷 P1352 没有上司的舞会 树形dp
题解树形dp求解 d[i][0]表示i没参加以i为根的子树最大快乐值 d[i][1]表示i参加以i为根的子树最大快乐值如果i不参加则可以从所有子节点j参加或者不参加转移来 即 d[i][0] = a[i] + ∑max(d[i][0], d[i][1])如果i参加则不能从子节点j参加的情况转移来 即d[i][1] = a[i] + ∑d[j][0]求d的过程使用dfs遍历 先递归下去回溯时...原创 2019-01-16 15:08:39 · 350 阅读 · 0 评论 -
Balancing Act POJ - 1655 树形dp 树的重心
题解题目大意 给你一个n的顶点n-1条边的无根树 让你找出树的重心 并求出平衡值树的重心 找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心 平衡值为最大子树节点数量使用树形dp求解 siz[i]表示i的子树的大小 d[i]表示以i为重的平衡值求解过程中任选一点为树根 siz使用DFS回溯求解siz[i] = 1 + ∑siz[子树]在DFS过程中可以同时求出d[...原创 2019-01-16 15:30:03 · 373 阅读 · 0 评论 -
Roads in the North POJ - 2631 树的直径 BFS | 树形dp
题解题目大意 给你n-1条带权边组成一个n个节点的树 题目没给n接收到文件尾 求这个树的直径 树的直径为树中两个距离最远点的距离方法1 两次BFS第一次任找一点为起点进行BFS得到最远的点p 点p一定为直径上的一个端点第二次以p为起点再次BFS得到最远的点q 并求出pq之间的距离即为树的直径AC代码#include <stdio.h>#include <iostre...原创 2019-01-16 17:06:28 · 161 阅读 · 0 评论 -
Computer HDU - 2196 树形dp
题解题目大意 给n个点的无向树 按照编号从2开始分别给出他的父节点和路径长度 输出每个点到其它点的最远距离使用树形dp求解 考虑每个点的最远距离分为两种情况 一种是向父节点走一种是向子节点走d[i]表示第一步向子节点走的最远距离 一旦第一步向子节点走则后面的都要向子节点走否则路径会重复p[i]表示第一步向父节点走的最远距离 d[i]使用DFS自底向上求解类似于计算子树大小p[i]使用DF...原创 2019-01-17 00:23:02 · 200 阅读 · 0 评论 -
“卓见杯”第五届CCPC中国大学生程序设计竞赛河南省赛-网络模拟赛 部分题解
题目链接A Mex Query#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;typedef long long ll; const int INF = 0x3f3f3f3f;const ll LINF = 0...原创 2019-04-18 21:39:29 · 503 阅读 · 0 评论