首页 > Accumulation Degree
头像 Alan233
发表于 2020-04-12 09:32:08
换根dp 一般来说,我们做题的树都是默认 为根的。但是有些题目需要计算以每个节点为根时的内容。朴素的暴力:以每个点 作为 暴力dfs下去,复杂度;正确的做法:换根dp,复杂度。 执行步骤 第一次扫描,先默认 ,跑一遍 ; 第二次扫描,从 开始,每次从 到 节点时,计算根从 转移到 展开全文
头像 ⊙__⊙
发表于 2020-04-14 15:24:40
题目意思:给出一个无向图,n个顶点,n-1条边。每条边有权值w,表示流量。 流量:本来我实在没理解题目样例的解释,后来问了一位大佬的解,秒懂了.其实边权可以理解成水管的粗细,水能流多少。 比如1->4-3 首先1->4可以通过13的水,由于4->3水管只有5的大小,所以1-4-3 展开全文
头像 塞蒙尘
发表于 2020-04-12 22:02:40
Solution 普通的树形dp。 首先设为从点向的子树推流,所能达到的最大流量; 那么有: 其中为的孩子,为和之间的边的流量上限。 设为从向整棵树推流,所能达到的最大流量,那么有: 作两遍dfs,分别求出和的值,取输出即可,复杂度。 Code #include <bits/stdc++.h 展开全文
头像 ThinkofBlank
发表于 2020-04-13 09:03:06
换根dp板子题,首先,我们要想想如果根为1时,1的答案 我们设表示以为根子树的中,若有无限流量,i点能往下流的最大流量。 我们不难推出式子 意义就是,我们知道一个儿子v可以向下流的最大流量是,我们最多可以向儿子v流的流量,所以我们最多向该儿子流的流量,所有儿子的这个值的和就是了 特别的,若i是叶子的 展开全文
头像 wxyww
发表于 2020-04-12 20:52:55
solution 经典的的方式。 转化一下题意就是:选一个根,使得所有叶子节点到该节点路径上最小边权之和最大。 先考虑的做法 用表示以1为根时i这棵子树内的答案。那么就有。 所以枚举一下根,然后每次这样dfs一遍,就可以在时间内解决问题了。 考虑优化该算法 我们只要在以1为根做一遍上面自下而上的dp 展开全文
头像 hnust_yangyanjun
发表于 2020-08-22 13:07:20
题意:给予你一棵n个节点的树,每一条边有一个容量,你选择一个节点当根,求从根节点到叶子节点的流量的最大值。 思路:树状dp+换根:flow[i]为以i为子树i到子树叶子节点的流量最大值。ans[i]表示以i为根节点时的答案。flow[u]= min(flow[v],cost(u,v))(v为u的子节 展开全文
头像 get_right_Lkl
发表于 2020-04-12 12:04:36
https://ac.nowcoder.com/acm/problem/201400先看这道树学题如果有了解过树的重心,那么这道题就easy了,无非就是找树的重心。找树的重心就是一遍dfs。然后再一遍dfs求每个点的深度。相加即可。 代码 #include <iostream> #inc 展开全文
头像 19_hanhan
发表于 2020-04-18 22:52:40
题目 题目描述: F(x)是一种属性。F(x)(节点x的累积度)定义如下: 树的每个边缘的权值是一个整数。 树中度为1的节点称为终端。 每条边的流量不能超过其权值。 F(x)是节点x可以流到其他终端节点的最 展开全文
头像 回归梦想
发表于 2020-04-15 19:36:11
@[TOC]本题目传送 题目树学是这个题的简易版,也涉及换根问题,可以先看看这个树学 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bitIO Format:%lld 题目描述 Trees are an important compon 展开全文
头像 离ACM还有一定距离
发表于 2020-04-18 23:47:19
题意 给定一棵n个节点的树,边权值视作流量,找到一个源点使得从该点出发到所有叶子节点流量和最大。 思路: 我们先考虑这样一道题:指定一点使得到树上其他点的深度之和最小。 这显然是树的重心的性质:树中所有点到某个点的距离和中,到重心的距离和是最小的,如果有两个重心,他们的距离和一样。 我们先假设这棵树 展开全文