HDU2196 - Computer(树的直径+DP)

4.2 多智能体系统的严格隔离机制:防止上下文污染与隐私数据脱敏实战 本文探讨了多智能体系统中上下文信息共享带来的安全风险与解决方案。研究发现,随着Agent数量增加,上下文信息泄露概率呈指数级上升,可能导致跨Agent错误传播、隐私泄露等问题。文章提出分层隔离架构,将上下文划分为全局共享和本地私有两部分,并通过命名空间隔离、递归压缩和隐私过滤技术确保数据安全。技术实现上,建议为每个子Agent创建独立状态空间,采用原子化更新和读写锁控制避免状态竞争。隐私保护方面,结合正则匹配和命名实体识别技术进行敏感数据过滤,确保符合GDPR等法规要求。这些措施共同构建了可靠、安全且合规的 阅读详情

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=2196


题目大意:

给定一个无向连通无环图,求每个节点到达的最远的节点的距离。


解题过程:

上午看了一下DP进阶之路的PDF,突然想学树型DP。然后找到了这个题,之前做了一个POJ的BFS求树的直径的,这次再来一发DP的。


题目分析:

由于题目给的是无向连通无环图,这里构造出一颗树来,不妨假设节点 1 为根。

那么对于任意一个节点,他能到达的最远的节点一定是他子树中的一个节点,或者经过他父亲到达的一个节点。

这里可以经过一次DFS求出每个节点到他子树中最远的节点的距离。

然后第二次DFS的时候求出每个节点经过他根节点能到达的最远的距离,求经过根节点能到达的最远的距离时,需要当前节点到根节点的距离加上根节点到最远的节点的距离。不过要注意的是,可能当前节点在根节点最远距离的路径上。

这里解决的方法是,求出每个节点最远的距离和次远的距离,如果当前节点在最远的距离路径上那么就选择次远的距离,判断是否在路径上需要记录下最远的距离是由那个儿子求出来的。


AC代码:

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

const int MAX = 11234;
const int INF = 0x3f3f3f3f;

int n;
vector<pair<int, int> > edge[MAX];

//dis1记录最远距离,dis2记录次远距离,num用来标记最远距离由那个节点而来的
int num[MAX], dis1[MAX], dis2[MAX], dp[MAX];


void read() {
    for (int i = 1; i <= n; i++) {
        edge[i].clear();
    }
    memset(dp, 0, sizeof(dp));
    for (int i = 2; i <= n; i++) {
        int v, w;
        scanf("%d %d", &v, &w);
        edge[v].push_back(make_pair(i, w));
    }
}

void dfs1(int u) {
    dis1[u] = 0;
    //这里的含义是,对于每个节点求他所有儿子节点的最远距离,那么当前节点的最远距离就是到儿子节点的距离加上儿子节点的最远距离
    //显然对于一个叶子节点,最远距离是0
    for (int i = 0; i < edge[u].size(); i++) {
        int v = edge[u][i].first;
        int w = edge[u][i].second;
        dfs1(v);
        if (dis1[v] + w > dis1[u]) {
            dis1[u] = dis1[v] + w;
            num[u] = v;
        }
    }
    //和上一步相似,求次远距离
    dis2[u] = -INF;
    for (int i = 0; i < edge[u].size(); i++) {
        int v = edge[u][i].first;
        int w = edge[u][i].second;
        //当前距离不能是最远距离
        if (v != num[u] && dis1[v] + w > dis2[u]) {
            dis2[u] = dis1[v] + w;
        }
    }
}

void dfs2(int u) {
    for (int i = 0; i < edge[u].size(); i++) {
        int v = edge[u][i].first;
        int w = edge[u][i].second;
        //dp[u]的含义是,当前节点经过父节点能到达的最远的距离
        //如果当前节点在最远距离的路径上,那么用次远距离,否则用最远距离
        if (v == num[u])
            dp[v] = max(dp[u], dis2[u]) + w;
        else
            dp[v] = max(dp[u], dis1[u]) + w;
        dfs2(v);
    }
}

void go() {
    dfs1(1);
    dfs2(1);
    //输出每个点的最远距离
    for (int i = 1; i <= n; i++) {
        printf("%d\n", max(dp[i], dis1[i]));
    }
}

int main() {
    while (~scanf("%d", &n)) {
        read();
        go();
    }
}
基于Simulink进行步进电机的重复控制仿真建模 重复控制概述目的:通过引入一个周期延迟环节来补偿系统的周期性误差,从而提高系统对周期性参考信号或扰动的跟踪性能。方法内部模型原理:在控制器中嵌入一个与周期性信号相关的模型(例如周期延迟环节),以实现对周期性误差的零稳态误差控制。滤波器设计:为了避免高频噪声放大,通常会在重复控制器中加入低通滤波器。优势对周期性信号具有良好的跟踪性能。不需要精确的数学模型即可实现高性能控制。挑战:需要合理设计重复控制器的参数以避免系统不稳定。 阅读详情

相关推荐

WhatsApp网页版扫码分析

扫码登录本质上是WhatsApp的多设备登录,设备之间可以独立运行,那么当我们首次通过WhatsApp扫码登录二维码时,到底发生了那些事情?交换了那些数据?

SocialMarketing的博客 5231

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

Windows 10/11下彻底卸载Chrome的终极指南(附一键清理注册表脚本)

本文提供了一份在Windows 10/11系统中彻底卸载Google Chrome浏览器的终极指南。针对标准卸载后用户数据与注册表项残留的问题,文章详细介绍了从应用程序层、用户数据层到系统集成层的三层深度清理方法,并重点提供了安全高效的注册表清理脚本,确保浏览器所有痕迹被完全移除,解决重装冲突并释放磁盘空间。

elastic6hunter的博客 783

树形dp hdu 2196

题目链接:hdu 2196 题目大意:有n台电脑,每台电脑之间都用电缆相连,当然了这是n-1边树。然后问每台电脑所能到达的最远电脑的距离。 思路:首先第一反应思路有点像单源最长路径。。。但是有n台电脑,都来一发估摸着n^2logn的时间复杂度(果断t了)。后来想想又有点树的分治的感觉,分枝节处理,,,,然后dp优化。。。就可以了。。。。。。。。。。。。。。来一发dfs找到离1(之所以选1是因为...

weixin_30731305的博客 124

【图数据库与知识图谱入门】2.2 图数据库 vs. 关系型数据库 vs. NoSQL数据库

本文对比了关系型数据库、NoSQL数据库和图数据库的核心差异与应用场景。关系型数据库以二维表结构为核心,适合结构化数据的事务处理(如MySQL),但多表关联查询性能随层级增加而下降。NoSQL数据库(如MongoDB)具有灵活schema,适合海量非结构化数据存储,但关联查询能力较弱。图数据库专注于节点-边关系建模,擅长处理复杂关联分析(如社交网络)。通过学生-课程案例展示了MySQL的多表JOIN操作和MongoDB的两种关联实现方式(内嵌文档和文档引用),揭示了不同数据库在数据关联处理上的本质区别。

kngines 1542

染色体外环状DNA:肿瘤研究新方向

染色体外环状DNA(ecDNA)是癌症中活化原癌基因扩增的主要方式。区别于常染色体,这类生物大分子主要以环状的形式存在于细胞核当中,长度分布在103-106数量级,无中心粒。ecDNA序列中包含一个或者多个基因与调控元件,结构开放,转录活性强,相比于在棒状染色体结构基因,ecDNA的生物功能活性更强。癌症中,成环的基因区域拷贝数往往增高,而超过一半的高拷贝数事件是ecDNA驱动生成。...

blackjimmy的博客 766

HDU-2196 Computer(树dp)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2196 题意:给出一棵树,让求每个点能到达的最远距离 思路: dp[u][0]表示u的子树中所能达到的最远距离 dp[u][1]表示u的子树中所能达到的次远距离 dp[u][2]表示u的父亲结点所能达到的最远距离 难点是在求dp[u][2]上 代码:#include<bits/stdc++.h>

huatian5的博客 296

信创改造实战:SpringBoot项目迁移到宝兰德BES 9.5.5的完整避坑指南(附依赖配置)

本文详细介绍了将SpringBoot项目迁移到宝兰德BES 9.5.5中间件的完整流程,包括环境准备、依赖调整、Web.xml版本适配、部署配置优化及常见问题解决方案。特别针对信创改造需求,提供了排除Tomcat依赖、处理BES专用starter等实用技巧,帮助开发者顺利完成国产中间件迁移。

weixin_30825581的博客 1101

hdu 2196 Computer(树形DP)

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

weixin_30576827的博客 272

【腾讯小龙虾WorkBuddy专栏01】初识WorkBuddy!定位、核心优势、功能界面全解析

【腾讯小龙虾WorkBuddy专栏01】初识WorkBuddy!定位、核心优势、功能界面全解析

AI人人懂 3851

【深度学习新浪潮】如何上手DINO v3:Meta新一代视觉大模型实战指南

自定义数据集类(适配本地/公开数据集)# 去除batch维度# 构建数据加载器# 定义分类模型(冻结预训练层,仅训练分类头)self.classifier = nn.Linear(dino_model.config.hidden_size, num_classes) # 分类头global_feat = outputs.global_attention_pool # 取全局特征# 初始化模型# 冻结预训练层(仅训练分类头)# 定义损失函数和优化器。

专注:太空算力、AI infra、异构调度、大模型成本工程 492

Computer HDU - 2196 (树形dp || 树的直径)

Computer HDU - 2196 (树形dp || 树的直径) 题目链接 题目大意: 给定一棵树,知道相邻结点的距离,问对于每一个结点,和距离它最远的结点之间的距离是多少。 Input: 5 n个结点 1 1 表示2和1之间的距离是1 2 1 表示3和2之间的距离是1 3 1 表示4和3之间的距离是1 1 1 表示5和1之间的距离是1 ...

deerly_的博客 677

【推荐100个unity插件】unity易于使用模块化设计的天空、体积云和天气系统——Enviro 3

Enviro 3是一款功能强大的Unity天空与天气系统插件,提供动态天空、体积云、天气模拟等丰富功能。安装时需将预制体拖入场景并配置主相机,URP支持需激活深度纹理和添加渲染特性。模块化设计允许自由添加/移除时间、光照、雾效等模块,并通过API控制参数。推荐配合色调映射(如ACES模式)获得最佳视觉效果。插件支持季节、温湿度模拟及闪电风暴等特效,适用于需要逼真环境渲染的Unity项目。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2094

【树形DP_树的直径】HDU 2196 Computer

HDU 2196 Computer 题意:给一棵树,求每个结点的最大距离(从该结点到达所有叶子结点中的最大距离)并输出。题目要求输入真的很迷,每一行(从2开始)代表的结点u和输入结点v之间的边的权值是w。嗐,真的迷。读了好久才读懂。QAQ 【今天才知道原来以下做法是求树的直径的做法,first[x] + upp[x]的最大值就是树的直径】 思路:我们任取一个结点作为根结点,将无根树转...

L_X_ 341

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

树形dp || 树的直径性质 hdu-2196 computer

Computer HDU - 2196 A school bought the first computer some time ago(so this computer's id is 1). During the recent years the school bought N-1 new computers. Each new computer was connected to on...

yhb的博客 219

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

hdu 2196 Computer(树的直径\树上dp)

题目链接 Computer Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5702    Accepted Submission(s): 2854 Problem Description A schoo

fouzhe的博客 603

lwip-2.0.3

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

HDU - 2196 Computer (树形DP,树的直径相关)

???? ???? ???? 题意:求与每个点距离最远的点的距离 选择一个根,求出他向下和向上分别的最大值,两者再求一个最大值即可。 这里的DP也可以用在求直径上(树中存在负权的时候dfs/bfs不再适用), 把最后一步换成dp0与dp2求和即可 int n; int id[MX];//i结点的最深链在哪个儿子 ll dp[MX][3]; int head[MX],tot; struct IN{int v,w,...

欢迎光临 我的心 252

Hdu 2196 Computer (树的直径 或 树形DP)

貌似这题是树形DP的经典题,树形DPz

whyorwhnt的专栏 1016

hdu 2196 Computer 树形DP或者树的直径

Computer Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5805    Accepted Submission(s): 2909 Problem Description A school bought t

swust_fang 603

HDU 2196 Computer (树型dp/树直径)

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

HHH_go_的博客 389

Computer(HDU2196+树形dp+树的直径)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2196 题目: 题意:有n台电脑,每台电脑连接其他电脑,第i行(包括第一行的n)连接u,长度为w,问你每个节点能够连接的最远距离。 思路:树形dp,由于本题是一棵有根树(根节点为1),所以每个节点能到达的最远距离为max(从父亲节点往上传并到达根节点的其他子树的最远距离,从子节点...

di6499的博客 165

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

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

常胜将军的博客 658

hdu2196-树形dp|树的直径-Computer

http://acm.hdu.edu.cn/showproblem.php?pid=2196 给定一个网络,是一个图,求每个节点到最远节点的距离。。 1 树的直径。 即树上的最长简单路(最长的一条线)。然后求出直径的两个端点, 在计算的时候记忆化一下,保存一下他们距离 端点的距离。然后取最远的。( 1 先求出距离一个端点的距离,用直径直接减去是不行的,,因为有的点并不在树的直径上。。

天与云与山与水 397

「HDU-2196」Computer (树形DP、树的直径)

「HDU-2196」Computer 树形dp,树的最长路径(最远点对) 题意 给出一棵nn个结点的无根树,求出每个结点所能到达的最远点的距离。 解法 将无根树转成有根树,并进行两次DFS。 第一次DFS求出每个结点在其子树中的正向最大距离和正向次大距离,记为dp[0][x]和dp[1][x],并标记最长距离所对应的子结点id[i] ,利用id[i]能跳过最大点计算第二大的点; 此时可知...

橘嘉禾 149

HDU-2196 Computer(树的直径+DP)

ComputerTime Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 32752    Accepted Submission(s): 4667Problem DescriptionA school bought the first comput...

Amove 448

HDU2196 Computer (树形dp或树的直径)

题意 给定一个n个点的树,两点之间的距离定义为他们两点之间最短路经过的边数,问对于每个i,其它点距离i最远是多少(n小于等于100000) 题解 首先将这棵树转换为有根树 方法一:(利用树的直径) 求出这棵树的任意一条直径(u,v),然后dfs出u及v到其他任意一个点i的距离,那么对于每一个点,最长的距离是max{dist(u,i),dist(v,i)}max\{dist(u,i),

gankinghand的博客 397
上一篇: UVA11235 - Frequent values(游程编码+线段树)
下一篇: HDU1024 - Max Sum Plus Plus(DP+降维优化)
ACM_Fish
博客等级 码龄10年 69粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值