POJ 3585 (dp)

最大疯子树:树形DP优化:二次扫描+换根法(poj3585)     相信看这篇文的人应该是会一些简单的线性树形dp的吧……    如果有不会的请先看看树形dp基础吧……比如这道题没有上司的舞会    其实之所以想写这篇文是因为前段时间被教练骗去叫去参加一场UESTC组织主办的线下赛,叫什么……2018青少年信息学科普活动春季体验营,然后测试的时候第一题我是用的换根法A的,于是决定皮一皮写一写。    先上题面:    最大疯子树    【题目描述】    ... 阅读详情

一眼看过去还以为是网络流,想想复杂度好像高了点…后来发现书上是做了树上的dp(二次扫描,换根)…emmm,反正还是觉得挺神奇的。思路可以看进阶指南p267…

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
struct edge {
    int to, cap;
};
vector<edge>G[200005];
int d[200005], f[200005], vis[200005], degree[200005];
void dp(int x)
{
    vis[x] = 1;
    for (int i = 0; i < G[x].size(); i++) {
        edge t = G[x][i];
        if (vis[t.to])continue;
        dp(t.to);
        if (degree[t.to] == 1)d[x] += t.cap;//如果度为1,则只有边容量会限制
        else d[x] += min(t.cap, d[t.to]);
    }
}
void dfs(int x)
{
    vis[x] = 1;
    for (int i = 0; i < G[x].size(); i++) {
        edge t = G[x][i];
        if (vis[t.to])continue;
        if (degree[x] == 1)f[t.to] = d[t.to] + t.cap;
        else f[t.to] = d[t.to] + min((f[x] - min(t.cap, d[t.to])), t.cap);//这里要小心里面的f[x]和d[t.to],f和d不要搞混!!
        dfs(t.to);
    }
}
int main()
{
    int t, n, i, j, k;
    cin >> t;
    while (t--) {
        memset(f, 0, sizeof(f)); memset(d, 0, sizeof(d)); memset(vis, 0, sizeof(vis)); memset(degree, 0, sizeof(degree));
        cin >> n;
        for (i = 1; i <= n; i++)G[i].clear(); int a, b, c;
        for (i = 1; i < n; i++) {
            scanf("%d %d %d", &a, &b, &c); degree[a]++, degree[b]++;//算度
            G[a].push_back(edge{ b,c }); G[b].push_back(edge{ a,c });
        }
        dp(1); memset(vis, 0, sizeof(vis));
        f[1] = d[1];//这个不要忘了!!!
        dfs(1);
        int ans = 0;
        for (i = 1; i <= n; i++)
            ans = max(ans, f[i]);
        cout << ans << endl;
    }

    return 0;
}
手机耳机麦克风(ECM)电路设计实战:从差分走线到射频干扰滤波,一个电阻引发的灵敏度问题 本文深入探讨了手机耳机麦克风(ECM)电路设计中的关键问题,从差分走线到射频干扰滤波,特别关注了一个电阻引发的灵敏度问题。通过实际案例分析,详细解析了ECM麦克风工作原理、偏置电阻选型、差分信号传输设计以及射频干扰抑制策略,为工程师提供了实用的设计指南和优化建议。 阅读详情

相关推荐

自动驾驶仿真(五)—— 基于Carsim、Prescan、Simulink的联合仿真

自动驾驶仿真五——基于Carsim、Prescan、Simulink的联合仿真1. 联合仿真流程2. CarSim联合仿真配置要点3. Prescan联合仿真配置要点4. Carsim、Prescan、Simulink联合仿真结果5. 参考学习的书目教材 博主前面的博文已经介绍了Carsim和Prescan各自与Matlab/Simulink的相关联合仿真应用实例,并且论述过几款软件各自的优势及用法,CarSim适合动力学模型的建立,PreScan适合行车场景的搭建,Simulink适合控制算法的设计及信号

zhudj08的博客 1万+

POJ3585(Accumulation Degree 换根dp模板 所有点到所有点的容量)

题目 #include<cstdio> #include<cstring> #include<algorithm> #define en '\n' #define m(a,b) memset(a,b,sizeof a) using namespace std; typedef long long ll; const int N=2e5+5; struct E...

qq_42576687的博客 262

最优化理论与自动驾驶(三):LQR原理、公式及代码演示

LQR 是基于线性系统和二次型代价函数的最优控制方法,在实际工程应用中,我们一般采用离散时间系统的LQR设计,其目标是通过设计反馈控制律,使系统在离散时间步长内稳定运行,最小化某个二次型代价函数。给定一个离散时间系统,其状态和控制输入通过以下方程表示:是时刻k的系统状态,是时刻k的控制输入,是状态转移矩阵,是输入矩阵。系统描述的物理意义:系统状态通过矩阵A演变到下一时刻,同时控制输入通过矩阵B影响系统的状态。

a8598671的博客 4595

POJ-3585 树形dp 换根法

题目 #include<iostream> #include<vector> #include<stdio.h> #include<string.h> #define P(i,j) make_pair(i,j) using namespace std; typedef long long ll; const int N=2e5+5; int t,n,...

刷题记录 313

从零到一:EHB-电机复合制动系统的Simulink仿真实战指南

本文详细介绍了EHB-电机复合制动系统在纯电动汽车中的Simulink仿真实战指南。通过系统概述、建模核心模块解析、控制策略开发及典型问题排查,帮助读者掌握从零到一的开发流程。重点讲解了液压子系统建模、电机再生制动模型及整车动力学集成,为开发者提供了一套完整的解决方案。

hh234的博客 1006

【目标检测】全局上下文感知的详解

目标检测中的全局上下文感知(Global Context Awareness)​是指模型在定位和识别目标时,能够有效利用图像中全局或大范围的上下文信息(如场景语义、目标间关系、空间布局等),而不仅仅依赖局部特征。这种能力显著提升了检测的鲁棒性,尤其是在复杂场景(如遮挡、小目标、密集目标)中表现突出。

浩瀚之水的专栏 644

poj3585【树形dp二次换根】

这道题如果用暴力的方法是枚举根节点,对每个根节点dfs下去,但是这样肯定会T,需要用树形dp优化一下。 辅助数组:d[maxn], f[manx]; d[i]:代表以任意某个节点为根,i可以向其子节点流的最大流量。 f[i]:代表以i为根节点时,最大流量。 当我们以1为根节点时,明显f[1] = d[1]; 处理d【i】数组:一遍dfs就行。 关键在于如何求f【i】? 我们可以知道f[i] = d...

qq_39921637的博客 484

使用 MATLAB/Simulink + Simscape Electrical,构建一个含光伏并网系统与SVG的联合仿真模型,实现动态无功补偿与电压支撑

摘要:本文详细介绍了基于Simulink的SVG与光伏并网逆变器联合系统建模方法。通过构建包含光伏单元、SVG主电路和控制模块的仿真模型,实现动态无功补偿与电压稳定。重点阐述了ip-iq无功检测算法、双闭环控制和SVPWM调制等关键技术。仿真结果表明,该系统能快速响应无功需求,在10ms内将功率因数提升至0.98以上,有效抑制电压波动。文章为新能源并网系统中的电能质量治理提供了实用解决方案,并提出了进一步优化方向。

xiaoheshang_123的博客 322

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

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

hwdn3000的博客 466

机床联网系列总结

总结机床联网专栏,两个好用的工具介绍,以及后续提升的方法和建议。

若云流风的专栏 933

Allegro如何用自带的功能将线段变成铜皮操作指导

在做PCB设计的时候,有时根据设计需要将线段变成铜皮,可以借助辅助工具来实现这一操作,但是Allegro自身也自带这个功能,如下图。勾选Delete original objects。如何用自带的功能将线段变成铜皮操作指导。勾选Convert to shape,需要把这段走线变成铜皮。

weixin_54787054的博客 2946

POJ3585

POJ3585 题意 给定一棵nnn个节点的无向带权树,要你找出一个节点作为根,向叶子节点流水,使流水量最大。 思路 换根DP 这种题往往都是先从某个点出发DFS1DFS_1DFS1​,求出以这个节点ttt为根的答案,并记录与答案相关的数据到数组中。 然后DFS2DFS_2DFS2​从ttt节点出发,记录换根的答案,其中所有根的最大值就为所求值。 难点在于该如何去找寻其中的递推关系式。 ddd数组...

11eyes 434

配置 SAP Fiori 服务的 ICF 节点:从 SICF 激活到访问链路打通的完整实践

在SAP Fiori项目实施中,ICF节点配置是关键前置条件却常被忽视。ICF(Internet Communication Framework)作为HTTP请求入口,需要通过SICF事务码激活相关服务节点,否则即使应用开发完善,用户仍可能遇到页面无法访问等问题。典型问题表现为:磁贴可点击但页面空白、资源加载失败等。激活路径主要涉及三组节点:bsp分支下的管理入口、ui5_ui5分支下的应用资源,以及public/bc下的公共资源。项目实施中需特别注意同名服务在不同分支下的差异化作用,确保完整链路通畅。IC

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 264

poj 3585 二次扫描+换根dp

题目链接:poj 3585 这题应该算换根dp的入门题吧 首先我们进行第一次扫描 可以任选一个根x 算出以x为源点的最大流量是多少 设表示以x为根的子树中,把x作为源点 从x流向子树的最大流量是多少 我们用表示一个点的入度 有如下dp方程 第二次扫描时我们先把根节点的答案计入(因为第一次扫描已经处理好了) 当我们要遍历一个子节点的时候(设为y) 我们要进行换根操作 如...

weixin_43824564的博客 405

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【树形dp】poj3585 Accumulation Degree

考虑树形dp,由于根不确定,所以我们先以1为根跑一次算出来g[i]表示i的子树内的最大值 然后再一次dfs,计算F[i]表示以i为物资投放点的答案 就得到了以上公式 这个换根的过程很重要!! ...

andyc_03的博客 197

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

POJ 3585 一道很好的树DP

题目要求给一棵加权无向树,求每个点到叶子节点的最大流量。范围20万。 必须是O(N)的树DP才行。 首先固定一个为根,做一次DFS,求每个节点到其子树的叶子节点的流量和son[i],以及每个节点对其父亲节点的贡献belong[i],还有每个点和他父亲节点的边权edge[i]。然后对每个节点做一次记忆化搜索,顺着第一次搜索的边反向搜索。DP的转移方程是 dp[i] = min(dp[fathe...

weixin_33973600的博客 118

POJ3585:Accumulation Degree(换根树形dp)

Accumulation Degree Time Limit:5000MS Memory Limit:65536K Total Submissions:3425 Accepted:859 题目链接:http://poj.org/problem?id=3585 Description: Trees are an import...

dft539533的博客 223

poj3585(树形dp,换根法)

换根法思想为, 1,随便找一个点作为根进行dp, 2,再以原来点为根进行dp,此次dp,设最优解为 f[x],那么f[root]=d[root],这是显而易见的 然后再通过找d[son]与f[x]之间关系进行dp 比如本道题,若f[x]已知最优解,那么把son换成根,f[x]的最优解即为 d[v]+f[x]-min(d[v],w(x,v)) 类似点分治求重心,通过与父亲值做减...

allia990718的博客 337

Accumulation Degree POJ - 3585 -树形DP

Accumulation Degree  POJ - 3585  题意: 题意:找一个点使得,使得从这个点出发作为源点,发出的流量最大,输出这个最大的流量。  思路:把点1提为树根,从1出发 进行最大流量记录,在这个过程中把 边流量可以推到流向的点。 在进行换根dp,  转移方程为   :   if(in[fa[u]]==1)g[u]+=flow[u];        ...

BePosit的博客 434

[POJ 3585] Accumulation Degree

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

123

换根dp

换根dp 树形dpdpdp的一个内容,对于有根树的dpdpdp值可以O(n)O(n)O(n)求的题目,而要求考虑无根树的方法。 方法比较简单,下面来看一道例题POJ3585 题目描述 有一个树形的水系,由 N-1 条河道和 N 个交叉点组成。 我们可以把交叉点看作树中的节点,编号为 1~N,河道则看作树中的无向边。 每条河道都有一个容量,连接 x 与 y 的河道的容量记为 c(x,y)。 河道中单...

Galaxy_yr的博客 379

树形DP二次扫描:POJ3585 && CF219D

POJ3585 题解 选择一个点,使它到所有端点的流量和最大。 一棵树,我们可求每个结点到子树的端点的最大流量和。DFS一遍,自低先上。设g[u]表示到u结点到子树端点的最大流量和,那么g[u] += min(g[v],e.cap)。v为root的子节点,e.cap表示这一条边的容量。如果下一个结点使叶子结点,那么直接加上e.cap,即g[u] += e.cap。 然后再DFS一遍,求结点...

FlyingJack 205

2020复习——树形dp

1.poj3585(换根dp) 2.P3647 [APIO2014]连珠线(换根dp)待填坑 3.P3647 [APIO2014]连珠线(换根dp)待填坑

andyc_03的博客 141
上一篇: POJ 1742 Coins
下一篇: 快速乘法(模板)
HumveeA6
博客等级 码龄17年 12粉丝 175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值