Accumulation Degree (POJ - 3585 ,树形 DP 二次扫描与换根法)

【题解】poj3585 Accumulation Degree 二次扫描与换根法 题目链接 Description Trees are an important component of the natural landscape because of their prevention of erosion and the provision of a specific ather-sheltered ecosystem in and under their foliage. ... 阅读详情

一.题目链接:

POJ-3585

二.题目大意:

给出一颗无根树,每条边有权值 w[i]

当选择一点为根时,从该点灌水,要求每条路上的水都不能溢出

现可以任意一点为根,求最大灌水量.

三.分析:

好像是个模板题....

大佬的题解

四.代码实现:

#include <cstdio>
#include <algorithm>
using namespace std;

const int M = (int)2e5;
const int inf = 0x3f3f3f3f;

int cnt;
int head[M + 5];
struct node
{
    int v, w, nx;
}Edge[M * 2 + 5];

int in[M + 5];
int d[M + 5];
int f[M + 5];

void init(int n)
{
    cnt = 0;
    for(int i = 1; i <= n; ++i)
    {
        in[i] = 0;
        head[i] = -1;
    }
}

void add(int u, int v, int w)
{
    Edge[cnt].v = v;
    Edge[cnt].w = w;
    Edge[cnt].nx = head[u];
    head[u] = cnt++;
}

int dfs_d(int u, int fa)
{
    d[u] = 0;
    for(int i = head[u]; ~i; i = Edge[i].nx)
    {
        int v = Edge[i].v;
        if(v == fa) continue;
        d[u] += min(Edge[i].w, dfs_d(v, u));
    }
    if(in[u] == 1)
        return Edge[head[u]].w;
    else
        return d[u];
}

void dfs_f(int u, int fa)
{
    for(int i = head[u]; ~i; i = Edge[i].nx)
    {
        int v = Edge[i].v;
        if(v == fa) continue;
        f[v] = d[v] + min(Edge[i].w, f[u] - min(Edge[i].w, d[v] ? d[v] : inf));
        if(in[u] == 1)
            f[v] += Edge[i].w;
        dfs_f(v, u);
    }
}

int main()
{
    int T;
    scanf("%d", &T);
    while(T--)
    {
        int n;
        scanf("%d", &n);
        init(n);
        for(int i = 0, u, v, w; i < n - 1; ++i)
        {
            scanf("%d %d %d", &u, &v, &w);
            add(u, v, w), add(v, u, w);
            in[u]++, in[v]++;
        }
        dfs_d(1, 0);
        f[1] = d[1];
        dfs_f(1, 0);
        int ans = 0;
        for(int i = 1; i <= n; ++i)
            ans = max(ans, f[i]);
        printf("%d\n", ans);
    }
    return 0;
}

 

基于Python的微信聊天记录分析——数据获取 本篇为“基于Python的微信聊天记录分析”第一篇,主要涉及数据获取,包括Python环境配置、WeChatMsg项目配置和运行、获取聊天记录等内容,流程简单、比较基础,后续这个系列会涉及基于Python的数据处理、统计分析、NLP技术等内容。希望和大家多多交流,共同进步! 阅读详情

相关推荐

Seurat3.0小提琴图腰围的参数

小提琴图没有有些群没有出现小提琴只有点点,是由于0值比例太多, 一个关键的参数scale = "width"导致了这种局面,应加上上述参数 ggplot(p$data,aes(ident,CD4)) + geom_violin(scale = "width", adjust =1, trim = TRUE) + geom_jitter()+ theme_bw() adjust参数可以调整腰的粗细,eg: ggplot(p$data,aes(ident,CD4)) + geom_violin(scale

Demomwu的博客 1661

牛客网【每日一题】4月13号 Accumulation Degree

文章目录题目描述样例分析:题意:题解:代码: 本题目传送 题目树学是这个题的简易版,也涉及换根问题,可以先看看这个 树学 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format:%lld 题目描述 Trees are an important component of the natural landscape be...

qq_35975367的博客 489

Nginx下ModSecurity模块安装详细教程

本文提供了在Nginx 1.28.0上安装ModSecurity v3的完整教程。首先需安装编译依赖,然后从源码编译安装ModSecurity库并设置优化参数。接着编译Nginx动态模块并配置加载。核心配置包括设置规则引擎、日志路径及性能优化参数。安装OWASP核心规则集后,在Nginx站点配置中启用ModSecurity。最后测试规则有效性并给出性能优化建议,如规则排除、精简规则集等。整个过程包含详细的命令和配置示例,确保安全防护功能正常运作。

深山技术宅的博客 1784

Accumulation Degree POJ - 3585 (树形dp)(二次扫描和换根法)

Trees are an important component of the natural landscape because of their prevention of erosion and the provision of a specific ather-sheltered ecosystem in and under their foliage. Trees have also b...

Coldfresh的博客 1738

前端宝典之七:React性能优化实战精华篇

本文主要讲解实战项目中React性能优化的方法,主要分为三个大的方面:减少不必要的组件更新、组件优化以及tree-shaking,共11个方法

franktaoge的博客 1902

《备考系统架构设计师》 - 专栏介绍和目录

本专栏包括所有历年真题及详解、章节知识核心总结、精选高分论文、补充知识、专题总结等。欢迎订阅专栏。

数据知道的博客 4万+

poj3585 Accumulation Degree(树形dp,二次扫描换根)

Accumulation Degree Description Trees are an important component of the natural landscape because of their prevention of erosion and the provision of a specific ather-sheltered ecosystem in and unde...

闲人请进 516

YOLOv11改进 | 主干/Backbone篇 | 利用目标检测轻量化网络MobileNetV2替换Backbone(yolov11系列全系轻量化)

本文给大家带来的改进机制是,其是专为移动和嵌入式视觉应用设计的轻量化网络结构。其在MobilNetV1的基础上采用反转残差结构和线性瓶颈层。这种结构通过轻量级的深度卷积和线性卷积过滤特征,同时去除狭窄层中的非线性,以维持表征能力。MobileNetV2在性能上和精度上都要比V1版本强很多,其在多种应用(如对象检测、细粒度分类、面部属性识别和大规模地理定位)中都展现了一定的有效性。YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备目录一、本文介绍二、MobileNetV2的框架原理。

Snu77的博客 2844

POJ - 3585 Accumulation Degree 树形DP 二次扫描 与 换根法

Trees are an important component of the natural landscape because of their prevention of erosion and the provision of a specific ather-sheltered ecosystem in and under their foliage. Trees have also b...

hutwuguangrong的博客 300

开关电源和线性电源Multisim电路仿真实验汇总——硬件工程师笔记

本文系统介绍了稳压电源的基础知识与应用实验。首先阐述了稳压电源的定义与类型,包括线性稳压电源(如LM7805/7905)和开关稳压电源(降压/升压/升降压式)的工作原理、参数特点及优劣势。随后详细讲解了各类稳压电源的实验设计,如线性稳压电源的电路实现、开关稳压电源的PWM控制方法等。最后汇总了硬件工程师相关的笔试面试资源,涵盖器件知识、电路仿真、企业真题等内容。全文结合理论分析与Multisim仿真,为电子工程学习者提供了稳压电源的实用技术参考。

XU157303764的博客 1640

【Coppeliasim|轨迹规划(三)】机械臂逆解

文章目录一些设置导航点设置添加连接用于碰撞的设置代码实现终端输出 一些设置 导航点设置 关于如何添加设置 dummy 的细节建议参考官方手册,这里不再赘述。 添加连接用于碰撞的设置 按照序号点击(一个是机械臂,一个是所有的物体除了机械臂): 代码实现 getMatrixShiftedAlongZ=function(matrix,localZShift) local m={} for i=1,12,1 do m[i]=matrix[i] end

【人工智障 | 计算鸡视觉 | 机器孩】 1万+

Accumulation Degree POJ 3585(树形DP 二次扫描与换根法)

【例题】Accumulation Degree POJ 3585 有一个树形的水系,由N-1条河道和N个交叉点组成。我们可以把交叉点看作树中的节点,编号为1~N,河道则看作树中的无向边。每条河道都有一个容量,连x与y河道的容量记为c(x,y)。河道中单位时间流过的水量不能超过河道的容量。有一个节点是整个水系的发源地,可以源源不断地流出水,我们称之为源点。除了源点之外,树中所有度数为1的节点都是入海口,可以吸收无限多的水,我们称之为汇点。也就是说,水系中的水从源点出发,沿着每条河道,最终流向各个汇点。 在整个

hwdn3000的博客 466

27、振动信号实时并行处理与风力发电机模型鲁棒控制设计

本文探讨了振动信号实时并行处理与风力发电机模型鲁棒控制设计两大核心技术。在振动信号处理方面,提出基于FPGA、RT和PC三级架构的并行采集与处理系统,实现高效、实时的振动分析,适用于电机状态监测与预测性维护。在风力发电控制方面,研究风力农场布局优化(WFLO)问题,比较九种多目标元启发式算法性能,并提出基于扰动观察法的最大功率点跟踪(MPPT)控制策略,提升发电效率与系统鲁棒性。研究成果为工业设备智能监控与可再生能源优化提供了有效技术路径。

sunny的博客 72

poj 3585 Accumulation Degree【树形DP二次扫描换根法】

题目链接:http://poj.org/problem?id=3585; /* 题意:找一个点使得,使得从这个点出发作为源点,发出的流量最大,输出这个最大的流量。 思路:设pd[x]为以x为根的子树中,把x作为源点,从x发出的流量的最大值,dfs一次得到。 转移方程: pd[x]+= in[y]==1?w :min(pd[y],w) (x的所有儿子) ...

几许情愁的博客 263

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

题解 poj3585 Accumulation Degree (树形dp)(二次扫描和换根法)

写一篇题解,以纪念调了一个小时的经历(就是因为边的数组没有乘2 phhhh QAQ) 题目 题目大意:找一个点使得从这个点出发作为源点,流出的流量最大,输出这个最大的流量。 以这道题来介绍二次扫描和换根法 作为一道不定根的树形DP,如果直接对每个点进行DP,可能时间会炸掉 但是,优秀的二次换根和扫描法可以再O(n^2)内解决问题。 二次扫描的含义:(来自lyd 算法竞赛进阶指南)...

weixin_30768175的博客 97

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

POJ 3585 Accumulation Degree 树最大流(树形dp+二次扫描与换根法)

题意:给出一棵树,树上的边都有其权值,让我们求一个点能往外流的最大流量(会受到其它边权容量的限制)。 分析:二次扫描与换根法模板题,详见《算法竞赛进阶指南》P292-295,讲的很详细,一看就懂。 代码: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm...

常胜将军的博客 370

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

POJ - 3585 Accumulation Degree 树形DP + 二次扫描 + 换根法 + 最大流问题

题目描述 给定n个点, n-1条边, 边上有权值代表流量, 与网络流最大流问题相似 问以任意一点为起点, 全图的最大流量是多少 输入包括多组数据 样例 输入样例: 1 5 1 2 11 1 4 13 3 4 5 4 5 10 输出样例: 26 样例分析        5个点, 4条边。当以4为起点时, 得到最大流量为26。...

正月看雪花的博客 454

POJ3585-Accumulation Degree【树形dp,二次扫描与换根法】

正题 题目链接:http://poj.org/problem?id=3585 题目大意 有棵无根树,当你选择一个点为根时,价值就是根节点到所有叶节点的路上的最小权值之和。 解题思路 我们可以先计算一次点1为根时的答案,路上统计答案为didid_i,然后定义fifif_i为以i为根节点时的权值。 然后我们再由f1f1f_1转移到后面。我们考虑每一个子节点, 首先我们知道...

QuantAsk 720

POJ 3585 Accumulation Degree(二次扫描+换根)

目录题目题解题解一code1题解2code2 题目 http://poj.org/problem?id=3585 题目大意:给一棵无根树,求出最大流量 题解 题解一 暴力做法枚举源点sss,让sss作为整棵树的根,然后就变成了树形DPDPDP,因为答案的取得与子树有关 设f[x]f[x]f[x]表示已xxx为根,把xxx作为源点,从xxx向子树出发所获得的最大流量。 设degree[i]degre...

MILLOPE的博客 572

poj 3585 Accumulation Degree(二次扫描和换根法)

Accumulation Degree 大致题意:有一棵流量树,它的每一条边都有一个正流量,树上所有度数为一的节点都是出口,相应的树上每一个节点都有一个权值,它表示从这个节点向其他出口可以输送的最大总流量。我们的任务就是求这个最大总流量。 \(solution:\) 这一道题需要仔细思考其性质,我们发现如果我们把某一个节点当做是这棵树的根,并求出了这一个点的权值,那么与它相连的节点我们也可以求...

weixin_30405421的博客 172

[POJ 3585] Accumulation Degree

[题目链接] http://poj.org/problem?id=3585 [算法] 树形DP——二次扫描与换根法 [代码] #include <algorithm> #include <bitset> #include <cctype> #include &lt...

123

POJ 3585 Accumulation Degree 树形dp

题目链接 Accumulation Degree Time Limit:5000MS Memory Limit:65536K Total Submissions:5388 Accepted:1309 Description Trees are an important component of the natural landscape bec...

Luowaterbi的博客 253

poj3585 Accumulation Degree (树形dp二次扫描换根)

问题描述 有一个树形的水系,由 N-1 条河道和 N 个交叉点组成。 我们可以把交叉点看作树中的节点,编号为 1~N,河道则看作树中的无向边。 每条河道都有一个容量,连接 x 与 y 的河道的容量记为 c(x,y)。 河道中单位时间流过的水量不能超过河道的容量。 有一个节点是整个水系的发源地,可以源源不断地流出水,我们称之为源点。 除了源点之外,树中所有度数为 1 的节点都是入海口,可以吸收无限多...

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 237

POJ 3585 :Accumulation Degree (树形DP + 两次扫描换根法)

题目大意:给你一棵树,每条边有一个最大容量,根结点可以流出无限的流,叶子结点可以接收无限多的流,问你以哪一个点为原点整棵树的总容量最大。 其实就是在问以那个点为原点最大流最大,数据很大肯定不是用最大流算法来跑 n 遍,因为整体结构是一棵树,容易想到两次DFS处理出每一个点作为根节点的最大流,再找答案。 (所谓两次扫描换根法就是两次DFS扫描得到每一个点作为根结点的解,了解之后发现就是自己用过的东...

qq_41997978的博客 409

POJ 3585 Accumulation Degree

二次扫描与换根法 用于解决无根树,对于每一个节点作为根时都要统计 做法: 1.先以任意一个节点为根,做树形DP,保存每个节点的DP值 2.然后自上而下dfs,对于每个节点考虑以他为根的最大值 #include <iostream> #include <cstring> #include <cstdio> #include <algorithm&g...

123

【POJ3585】Accumulation Degree 二次扫描与换根法

简单来说,这是一道树形结构上的最大流问题。 朴素的解法是可以以每个节点为源点,单独进行一次dp,时间复杂度是\(O(n^2)\) 但是在朴素求解的过程中,相当于每次都求解了一次整棵树的信息,会做了不少的重复工作。 对于一棵子树的孩子节点和根节点之间存在着最优解的某些关联,因此可以采用自顶向下的一次 dfs 遍历求得结果。 阶段:子树大小 状态:当前子树大小的情况下,最大的流量是多少 状态...

K1385170的博客 233
上一篇: 286. 选课(算法竞赛进阶指南,背包类树形 DP)
下一篇: Broken robot( CodeForces - 24D,高斯消元解后效性 DP)
The___Flash
博客等级 码龄8年 79粉丝 223原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值