Computer (HDU - 2196,树形 DP - 二次扫描与换根法)

BUUCTF reverse题解汇总 BUUCTF平台刷题过程中做的一些逆向题解的总结归类 阅读详情

一.题目链接:

HDU-2196

二.题目大意:

给一颗无根树,求每个节点所能到达节点的最大距离.

三.分析:

感觉换根好难搞啊,想不清该维护哪些量,额我好笨啊...

附一个大佬讲解,看完就懂了~

还是要多做一些换根dp呀 (ง •̀_•́)ง

四.代码实现:

#include <bits/stdc++.h>
using namespace std;

const int M = (int)1e4;
const int inf = 0x3f3f3f3f;

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

int mx[M + 5], mxi[M + 5];
int sm[M + 5];
int dp[M + 5][2];

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

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

void dfs1(int u, int fa)
{
    for(int i = head[u]; ~i; i = Edge[i].nx)
    {
        int v = Edge[i].v;
        if(v == fa)
            continue;
        dfs1(v, u);
        if(mx[u] <= mx[v] + Edge[i].w)
        {
            sm[u] = mx[u];
            mx[u] = mx[v] + Edge[i].w;
            mxi[u] = v;
        }
        else if(sm[u] < mx[v] + Edge[i].w)
        {
            sm[u] = mx[v] + Edge[i].w;
        }
    }
    if(mx[u] == -inf)
        mx[u] = 0;
}

void dfs2(int u, int fa)
{
    for(int i = head[u]; ~i; i = Edge[i].nx)
    {
        int v = Edge[i].v;
        if(v == fa) continue;
        dp[v][0] = mx[v];
        if(mxi[u] == v)
            dp[v][1] = max(sm[u], dp[u][1]) + Edge[i].w;
        else
            dp[v][1] = max(mx[u], dp[u][1]) + Edge[i].w;
        dfs2(v, u);
    }
}

int main()
{
//    freopen("input.txt", "r", stdin);
    int n;
    while(~scanf("%d", &n))
    {
        init(n);
        for(int u = 2, v, w; u <= n; ++u)
        {
            scanf("%d %d", &v, &w);
            add(u, v, w);
            add(v, u, w);
        }
        dfs1(1, 0);
        dp[1][0] = mx[1];
        dfs2(1, 0);
        for(int i = 1; i <= n; ++i)
            printf("%d\n", max(dp[i][0], dp[i][1]));
    }
    return 0;
}

 

控制台模拟前端请求实现快速刷网课时长 本教程仅用于学习前端技术和网页开发,旨在提供教育与技术指导。对于任何未经授权或违反规定的使用行为,本人不承担任何责任。注意到那个serive后面有timestamp时间戳,暗示它很可能就是每30秒汇报一次进度和播放时长的命令,我们右键——复制——复制为fetch。有的网站上的网课需要的不仅仅是进度,而是时长,所以倍速插件失效,但我们可以使用控制台命令来模拟请求实现快速刷网课时长。尝试修改即可,例如我修改time为800,然后复制粘贴到控制台执行。播放视频,等待前端请求出现,然后复制前端请求为fetch。 阅读详情

相关推荐

进阶数据结构——链式前向星

链式前向星是一种进阶的数据结构,主要用于图的存储。我希望大家先看这个视频(蓝色字体点进去) 不然你很难理解的。在图论中,图的存储方式主要有邻接矩阵和邻接表两种。邻接矩阵虽然建图简单方便,但占内存较大,节点数量稍微大点的题目就难以使用(适合稠密图);而邻接表虽然节省空间,但其指针形式难写易错,且vector形式的读取速度较慢,易导致大数据下的超时(TLE)。针对上述问题,链式前向星作为一种折中的方式应运而生。链式前向星本质上是一种静态链表,它将数据以链表形式连接在一起。

ycs66的博客 2137

HDU2196(Computer 经典换根dp 求一棵树中所有节点能达到的最长距离)

题目 博主讲的很好:https://blog.youkuaiyun.com/u013480600/article/details/21831363 #include<bits/stdc++.h> #define en '\n' #define m(a,b) memset(a,b,sizeof a) using namespace std; typedef long long ll; const ...

qq_42576687的博客 518

VMD分子可视化实战:5个隐藏技巧让你的科研图像秒变顶刊级别

本文深入探讨了VMD分子可视化软件在科研图像美化中的5个高阶技巧,旨在帮助研究者将分子结构图提升至顶刊级别。内容涵盖原子色彩与材质的艺术化定制、沉浸式分子环境构建、专业构图与视角控制、数据驱动的动态可视化以及自动化工作流建立,通过精细的色彩映射、光照调整、周期性边界展示和脚本自动化,显著增强图像的科学叙事性与视觉冲击力。

weixin_29240343的博客 421

【二次扫描与换根】总结

前置知识:树形DP。No1No.1No.1二次扫描与换根的题目算 DP,需要大量的思维难度,也需要笔和草稿纸的配合。撒花(努力ing。

faith_xy的博客 342

Axure rp9 中继器新建表格

Axure rp9 中继器新建表格

weixin_49295490的博客 1652

立创·庐山派-K230-CanMV(嘉楠勘智)开发板通过ATK-ESP8266实现图像识别数据无线传输至原子云

本文详细介绍了如何使用立创·庐山派-K230-CanMV开发板,通过ATK-ESP8266 WIFI模块实现图像识别数据的无线传输至原子云平台。内容包括硬件连接、软件环境搭建、AT指令控制、原子云连接及数据上传的全过程,并提供了实用的调试技巧和常见问题解决方案,为物联网应用开发提供了完整实践指南。

potato的博客 743

树形dp(树形背包, 二次扫描和换根法)

树是特殊的无环连通图,有n个节点以及n - 1条边(可以是有向边也可以是无向边). 树形dp则是基于树这个数据结构的动态规划问题. 树分为有向树和无向树.有向树只要储存每个节点的子节点即可.而无向树则用邻接表的形式进行储存.注意无向树在遍历的时候遍历过的节点(状态)要打上标记,防止重复遍历. 在树上设计dp算法时,一般以节点从深到浅(子树从小到大)的顺序作为dp的"阶段".dp的状态表示中,一般第一维是节点编号(表示以该节点为根的子树). 我们有两种方式实现动态规划(对应两种遍历树的方式).分别是递

CK1513710764的博客 989

SAP 人力资源工资配置项3---工资项配置

工资项设置

xiouluoyang的专栏 1万+

DP专题学(复)习笔记

写在前面 目录 一、线性DP 二、背包 三、区间DP 四、树形DP 五、环形与后效性处理 六、状态压缩DP 七、倍增优化DP 八、数据结构优化DP 九、单调队列优化DP 十、斜率优化 十一、四边形不等式 十二、计数类DP 十三、数位统计DP 题目完成进度 20/22(数据更新ing~) 一、线性DP 线性DP大概就是个入门的感jio(虽...

weixin_33712881的博客 264

EtherCAT同步模式实战:如何用TwinCAT配置DC-Synchronous模式(附时序图详解)

本文详细解析了如何在TwinCAT环境中配置EtherCAT的DC-Synchronous同步模式,实现纳秒级同步精度。通过硬件准备、参数配置和高级调优步骤,帮助工程师解决工业自动化中的同步挑战,提升运动控制性能。

gold的博客 1572

OCR文字识别领域经典论文总结

本篇将介绍文字识别经典论文,内容包括文字检测、文字识别、端到端识别等方法,具体将分别对论文算法简介、思路、代码等几个部分展开介绍。目前各部分只举例经典论文,算法没有全部写完,后续会将在此部分基础上更新更多论文综述及代码实战部分。.................................

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 1万+

[HDU2196]Computer(树形dp+二次扫描换根法)

传送门 题意: 给出一棵树,求离每个节点最远的点的距离 一开始以为是树的直径。。然后看清题意之后就可以容易看出是树形dp了,对于这种无根树且需要求每一个点的情况需要运用二次扫描换根法。那么我们来设列dp方程吧,我们思考当前点x的最远点距离是怎么得到的,只有两种情况: 1、来自他的子树(图中红色) 2、来自他的子树以外的树(图中蓝色,以下简称父亲部) 第一种情况的话可以直接自底向上树形dp得到每...

私は Mocha!! 1125

[PCIE5.0] 4.2.3.2 Encoding of Presets

• 发射器预设:发射器预设值用4位二进制编码,表示不同的预设设置(P0 到 P10),这些设置定义了信号的传输特性。• 接收器预设提示:接收器预设提示是通过3位二进制编码告诉接收器建议的增益值,用于调整接收器的灵敏度(适用于8.0 GT/s数据速率)。

系统固件工程师 574

洛谷 P10962:Computer ← 换根DP

换根 DP 是树形 DP 的一种重要技术,用于解决需要以树中‌不同节点为根‌分别计算答案的问题。其核心思想是在一次动态规划后,通过‌推导出换根时的状态转移公式‌,高效地计算出所有节点作为根时的结果,避免对每个根节点都进行一次 O(n) 的树形DP(那样总复杂度为 O(n²))。

hnjzsyjyj的专栏 717

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

HDU 2196 Computer 换根法 树形dp

题意:给出一棵树,求离每个节点最远的点的距离 解法:把无根树转化成有根树分析,随便找一个根,对于每个节点,维护所有以当前节点为根的子树中距当前节点最远的距离和次远距离,两次dfs。 第一次扫描时,任选一个点为根,在“有根树”上执行一次树形dp,在回溯时,自底向上的状态转移。 第二次扫描时,从第一次选的根出发,对整根树执行一个dfs,在每次递归前进行自顶向下的转移,计算出换根后的解。 #include <iostream> #include <cstring> #include &lt

Vicente的博客 182

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

HDU2196Computer 树形dp

传送门 解法1 树的直径 参考博客 #include<bits/stdc++.h>//树的直径 #define MAXN 10010 using namespace std; typedef pair<int, int> P; int dis[MAXN], Max, root; vector <P > a[MAXN]; void Init(int n){ M...

Vibrant 183

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

HDU 2196 Computer(树形dp+换根法+树的直径)

题意:给出一棵树,求离每个节点最远的点的距离 分析: 方法一:贪心做法,不会证明,找到直径的两个端点,分别dfs一下,求出两端到每个点分别的距离取最大值,树的直径作用很大啊。 方法二:把无根树转化成有根树分析,对于每个节点,维护所有以当前节点为根的子树中距当前节点最远的距离和次远距离,二次扫描(两遍dfs)。 参考:https://blog.youkuaiyun.com/shuangde800/art...

常胜将军的博客 658

HDU 2196 Computer

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2196 思路: 做法$1:$ $spfa$,暴力扫。 复杂度:$O(T \times 2n^2)$。 显然布星。 做法$2:$ 树形$dp$。 对于一个点$v$,到其他的最长距离,可以由它的子树转移,也可以由它的父节点$u$的子树转移。 但$u$的子树中的最优解可能会有$v$...

baizhu6296的博客 160

HDU2196 Computer(树形DP)

Computer Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5106    Accepted Submission(s): 2577 Problem Description A school bought the

KeyboardPianist的博客 477

HDU2196[树形dp+二次扫描]java和c++版本题解

题目大意:就是给你一颗树,问你从每个点出发能到达的最远距离是多少,第一行输入点的个数nnn,第n−1n-1n−1行是输入两个数x,yx,yx,y,一个是第iii行是第iii个点连接上xxx,距离是yyy 解题思路:很明显从每个点出发到达最远的距离这是一个无根树,那么我们应该先把无根树转成有根树,那么对于一个点aia_iai​它答案有两种:1向子节点走2向父节点走 1.第一遍dfs,我们求每个点向其子节点走的时候能到达的最远距离Maxdiat[i]; 2。第二遍dfs,我们求出每个点向其父节点走的最远距离的

weixin_45630722的博客 459

【HDU2196】Computer

Computer Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 34146...

ETO的博客 239

【算法与数据结构】——树形DP二次扫描与换根

二次扫描与换根 在一棵无根树上需要以多个节点为根求解答案,可以运用二次扫描与换根法。具体操作是通过实现一次自底向上的深度优先搜索和一次自顶向下的深度优先搜索来计算“换根”后的解; (1)第1次扫描:任选一个结点为根出发,执行一次深度优先搜索,在递归回溯时自底向上进行状态转移,用子节点的状态更新父节点的状态 (2)第2次扫描:从刚才选出的跟出发,再进行一次深度优先搜索,在每次递归前都自顶向下进行状态转移,用父节点的状态更新子节点的状态,计算出“换根”后的结果。 ...

气派飞鹰的博客 482

二次扫描与换根法 acwng 286 积蓄程度

x流向其他节点 则是f[x]-min(d[y],c(x,y)) (如果这个不理解可以自己画图看看)简单来讲就是有课树形湖泊,度数为1的为汇点,现在让你找到一个源点,求从源点流向汇点水系流量最大。对与x节点到他的子节点y来讲 如果 x和y的度数都大于一。则f[y]首先有d[y]构成。对于本题我们设f[x]为表示把x作为源点,流向整个水系,流量最大是多少;设d[x]为第一次扫描 以root为根,从x出发流向子树的流量。y流向x则是c(x,y)(x与y边的容量)则f[y]=d[y]+c(x,y);

qq_65009787的博客 422

【树形dp】二次扫描与换根法

二次扫描与换根法

weixin_51307520的博客 387

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

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
上一篇: 棋盘分割 (POJ - 1191,二维区间 DP)
下一篇: XOR和路径 (HYSBZ - 2337 ,高斯消元解后效性 DP)
The___Flash
博客等级 码龄8年 79粉丝 223原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值