P4408 [NOI2003] 逃学的小孩 题解

鸿蒙日历组件进阶:教你打造个性化日程管理界面(支持月份切换) 本文深入探讨了鸿蒙应用开发中自定义日历组件的构建方法。通过详解基于Grid的布局设计、核心日期算法、月份切换逻辑以及事件管理集成,指导开发者打造支持个性化日程管理的高性能日历界面,提升应用交互体验。 阅读详情

贪心及其证明

设 A , B A,B A,B 为树直径的端点 , , , D i s t x , y Dist_{x,y} Distx,y​ 为树上两点的距离 , , , 则答案为 ∀ x , y , k ∈ T , max ⁡ ( min ⁡ ( D i s t x , k , D i s t y , k ) + D i s t x , y ) . \forall x,y,k\in T,\max(\min(Dist_{x,k},Dist_{y,k})+Dist_{x,y}). ∀x,y,k∈T,max(min(Distx,k​,Disty,k​)+Distx,y​).

分两种情况证明 , , , 其中 A , B A,B A,B 为直径的两个端点 , , , F F F 为出发点 . . .

  1. 如下图 , , , 若两条链有交集 : : :
    在这里插入图片描述

有定义可知 : : :
a + b ≥ c + d a + b ≥ b + c   o r   b + d a + b ≥ a + c   o r   a + d a+b \ge c+d\\ a+b \ge b+c~or~b+d\\ a+b\ge a+c~or~a+d a+b≥c+da+b≥b+c or b+da+b≥a+c or a+d
整理得 : : :
a ≥ c   o r   d b ≥ c   o r   d a\ge c~or~d\\ b\ge c~or~d a≥c or db≥c or d
显然待证式成立 . . .

  1. 如下图 , , , 若两条链无交集 : : :
    在这里插入图片描述
    那么同理 : : :
    a ≥ e + d   o r   e + c b ≥ e + d   o r   e + c a\ge e+d~or~e+c\\ b\ge e+d~or~e+c a≥e+d or e+cb≥e+d or e+c
    显然待证式成立 . . .

C + + C++ C++ 实现 : : :

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

template<typename Typename,int MaxCnt>
struct Queues{
	private:
		Typename Data[MaxCnt];
		int head,tail,size;
	public:
		Queues(){
			memset(Data,0,sizeof(Data));
			head=tail=size=0;
		}
		inline void Clear(){
			head=tail=size=0;
		}
		inline void Push(const Typename&x){
			if(size==MaxCnt)puts("Error Queue");
			else{
				size++;
				Data[tail]=x;
				tail++;
				if(tail==MaxCnt)tail=0;
			}
		}
		inline void Pop(){
			if(size==0)puts("Error Queue");
			else{
				size--;
				head++;
				if(head==MaxCnt)head=0;
			}
		}
		inline Typename Front(){
			if(size==0){puts("Error Queue");return Typename();}
			else return Data[head];
		}
		inline bool Empty(){return(size==0);}
		inline int Size(){return size;}
};

template<typename TypenameC,int MaxN,int MaxM>
struct Graphs{
	typedef TypenameC costtype;
	int Last[MaxN],cntn;
	int Next[MaxM],To[MaxM],cntm;
	costtype Cost[MaxM];
	Graphs(){
		Clear();
	}
	inline void Clear(){
		cntn=cntm=0;
		memset(Last,-1,sizeof(Last));
	}
};
template<typename Typename>
inline Typename Min(const Typename&x,const Typename&y){
	if(x<y)return x;return y;
}
template<typename Typename>
inline Typename Max(const Typename&x,const Typename&y){
	if(x>y)return x;return y;
}
template<typename Typename>
inline void Swap(Typename&x,Typename&y){
	Typename t=x;x=y;y=t;
}

template<typename TypenameG>
inline void Insert(TypenameG&G,int from,int to,typename TypenameG::costtype cost){
	G.To[G.cntm]=to;G.Cost[G.cntm]=cost;
	G.Next[G.cntm]=G.Last[from];G.Last[from]=G.cntm++;
}

const int MaxN=2e5+1e4;
const int MaxM=4e5+1e4;

Graphs<long long,MaxN,MaxM>G;
Queues<int,MaxN>Q;

bool Visit[MaxN];
inline int Bfs(int start,long long *Arr){
	memset(Visit,false,sizeof(Visit));
	Q.Clear();Q.Push(start);
	int res=start;Arr[start]=0;
	while(!Q.Empty()){
		int from=Q.Front();Q.Pop();
		Visit[from]=true;
		for(register int k=G.Last[from];k!=-1;k=G.Next[k]){
			if(Visit[G.To[k]])continue;
			Arr[G.To[k]]=Arr[from]+G.Cost[k];
			Q.Push(G.To[k]);
		}
		if(Arr[res]<Arr[from])res=from;
	}
	return res;
}

long long Dist[MaxN],DistS[MaxN],DistT[MaxN];
int n,m;

inline void ReInit(){
	memset(Dist,0,sizeof(Dist));
	memset(DistS,0,sizeof(DistS));
	memset(DistT,0,sizeof(DistT));
	scanf("%d%d",&n,&m);
	for(register int i=1,x,y;i<=m;i++){
		long long w;
		scanf("%d%d%lld",&x,&y,&w);
		Insert(G,x,y,w);Insert(G,y,x,w);
	}
}

inline void Work(){
	int s=Bfs(1,Dist);
	int t=Bfs(s,Dist);
	
	Bfs(s,DistS);
	Bfs(t,DistT);
	
	long long ans=0;
	for(register int i=1;i<=n;i++)
		ans=Max(Min(DistS[i],DistT[i])+Dist[t],ans);
		
	printf("%lld\n",ans);
}

int main(){
	ReInit();
	Work();
	return 0;
}
YOLOv11【第三章:高阶应用与落地篇·第1节】一文搞懂,YOLOv11-Seg 实例分割:Mask 原型生成与系数预测原理解析! 🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。 阅读详情

相关推荐

【一】PCIe基础知识

Linux PCIe基础知识

他山之石 可以攻玉 4万+

【最短路】P4408 [NOI2003]逃学的小孩

对于一张图上的任意三个点A,B,C 求max(min(dis[A][C],dis[B][C])+dis[A][B]) 我们先确定A,B为树上直径,可以用反证法简单证一下 然后就可以对于A和B两个点算一下其他点到A/B的距离,然后枚举点C即可 代码 #include<bits/stdc++.h> using namespace std; const int maxn=200000+5; int n,m,tot,st,ed; int head[maxn]; long long dis.

andyc_03的博客 203

DCDC开关节点SW的Layout抉择:打孔换层与EMI共模辐射的权衡

本文深入探讨了DCDC转换器中开关节点SW的Layout设计对EMI共模辐射的影响。通过分析SW节点的EMI辐射机制、打孔换层对输入环路的影响以及铜皮面积与共模辐射的量化关系,提出了工程实践中的权衡策略和优化方法,帮助工程师在设计中平衡EMI性能和电路效率。

weixin_29722783的博客 246

P4408 [NOI2003] 逃学的小孩

先查找一遍树的直径,然后枚举每一个点,并求如下式子的max即是答案(bx,by为树的直径的两个端点,,表示 by 到 i 的距离,容易知道。表示bx到i的距离,

2303_76591444的博客 211

Mamba与iTransformer融合:时间序列预测中的曼巴注意力机制创新实践

本文探讨了Mamba与iTransformer融合在时间序列预测中的创新实践,重点介绍了曼巴注意力机制的设计与优势。通过双路径信息流设计,该方案在保持O(n)复杂度的同时,显著提升了预测精度和训练效率。实验证明,混合架构在电力负荷、气象数据等多变量长序列场景中表现优异,预测误差降低至0.083,内存占用仅4.2GB。

weixin_29292535的博客 219

PT静态时序分析实战:从基础命令到高级报告解析

本文详细介绍了PT(PrimeTime)静态时序分析(STA)的实战技巧,从基础命令如pt_shell和report_timing的使用,到高级报告解析与问题排查。通过丰富的实例和脚本示例,帮助工程师快速掌握时序分析的核心技能,提升芯片设计验证效率。

weixin_29289821的博客 954

P4408 [NOI2003] 逃学的小孩(树的直径)

[NOI2003] 逃学的小孩 - 洛谷https://www.luogu.com.cn/problem/P4408一道学习树的直径的好题。题目要求最长的时间,说明答案应该是树的直径+max(起点离最近的朋友家的距离)所以我们不仅仅要求树的直径,更要记录直径上的点,并遍历它们求最长延申距离。...

Ghostttttttiii的博客 369

RK3588开发笔记-PCIE接口2.5G网卡RTL8125调试记录

在RK3588平台上调试2.5G网卡(Realtek RTL8125)时,我们会用到PCIE接口,这篇文章记录了从硬件连接、内核驱动到最终实现网络通信的整个调试过程,包括可能遇到的问题和解决方案。Realtek RTL8125是为高带宽需求设计的一款高性价比2.5G以太网控制器。它不仅提供了高达2.5Gbps的网络传输速率,还具备良好的节能特性、硬件卸载引擎和广泛的操作系统支持。无论是在家庭网络、企业NAS,还是游戏和云计算等场景中,RTL8125都能为用户提供更快速、更稳定的网络连接。

flypig has a dream! 3680

P4408 逃学的小孩-洛谷-java题解-树的直径

P4408 逃学的小孩-洛谷-java题解-树的直径

weixin_58428691的博客 832

嵌入式编程模型 | 原型模式

本文介绍了原型模式在嵌入式传感器网络中的应用。原型模式通过复制现有对象创建新实例,避免了重复初始化开销,适用于设备配置克隆、状态复制等场景。文章以传感器网络为例,展示了原型模式的结构(抽象原型类、具体原型类、客户端)和实现方式,通过C语言代码演示了温度/湿度传感器的克隆过程。该模式能有效提升嵌入式系统资源复用效率,实现快速部署相似配置的传感器节点,同时保持内存优化和配置灵活性。

嵌入式大杂烩 146

Python 领域 vllm 知识蒸馏的实践经验

知识蒸馏(Knowledge Distillation)是一种将大型、复杂模型(教师模型)的知识转移到小型、高效模型(学生模型)的技术。在大型语言模型(LLM)时代,这项技术变得尤为重要,因为它可以在保持模型性能的同时显著降低计算资源需求。本文专注于在Python生态中使用vLLM(Very Large Language Model)框架实现知识蒸馏的实践经验。vLLM是一个专为大型语言模型设计的高效推理和服务框架,它通过创新的注意力机制和内存管理技术,显著提高了LLM的推理速度。

AI Python 编程之道的博客 777

【luogu4408】 [NOI2003]逃学的小孩 [动态规划 树的直径]

P4408 [NOI2003]逃学的小孩 就是求一个树的直径 然后再在这个路径中找一点 emmmmmm大概那个意思 就这样吧emmmm 详见代码 1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<cstring> 5 #include...

weixin_30266829的博客 153

Opencv项目实战:09 物体尺寸测量

《Opencv项目实战:09 物体尺寸测量》本项目主要是运用了之前扫描文档的思想,以A4纸为背景,检测其中区域的物体长和宽。我的摄像头无法固定,所以是手持的,且由于我在寝室里面是真的没有找到合适的测量物体以及背景色(全是米色或原木色的)。所以效果有所欠缺,但经过ps修改的图片,检测的效果还是很不错的。

m0_62919535的博客 1万+

P4408 [NOI2003] 树的直径

题意 传送门 P4408 [NOI2003] 逃学的小孩 题解 设路径 (C,A)(C,A)(C,A) 与路径 (A,B)(A,B)(A,B) 的第一个交点为 DDD,问题等价于从 AAA 出发,找到两条路径 (A,B),(A,C)(A,B),(A,C)(A,B),(A,C) 且满足 dist(A,D)≤dist(D,B)dist(A,D)\leq dist(D,B)dist(A,D)≤dist(D,B),使 dist(A,B)+dist(A,C)dist(A,B)+dist(A,C)dist(A,B)+d

neweryyy的博客 119

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

bzoj 1509 //1509:[NOI2003]逃学的小孩 树的直径

bzoj 1509 //1509:[NOI2003]逃学的小孩 //在线测评地址https://www.lydsy.com/JudgeOnline/problem.php?id=1509 更多题解,详见https://blog.youkuaiyun.com/mrcrack/article/details/90228694BZOJ刷题记录 //关于树的直径,此文https://blog.youkuaiyun.com...

mrcrack的博客 452

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

BZOJ1509 & 洛谷4408:[NOI2003]逃学的小孩——题解

https://www.lydsy.com/JudgeOnline/problem.php?id=1509 https://www.luogu.org/problemnew/show/P4408 sb题,但是我至今不知道为什么这张图就一定是棵树……这题意没说明白啊…… 显然求直径,再求一点使得该点到直径两端的点的距离的最小值最大。 没有什么好方法,最后一个点只能暴力,所以我们预处理两端...

weixin_34137799的博客 175

VC中sqlite的使用

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

【题解】LuoGu4408:[NOI2003]逃学的小孩

原题传送门 本来想的一个O(n2)O(n^2)O(n2)的暴力 枚举CCC,把它记为根,在dfsdfsdfs枚举lca(A,B)lca(A,B)lca(A,B) 求出firu,secufir_u,sec_ufiru​,secu​表示以uuu为根的子树中最长链,次长链 再记dud_udu​为深度,那么对于一个(C,lca(A,B))(C,lca(A,B))(C,lca(A,B))的答案是firu+2secu+dufir_u+2sec_u+d_ufiru​+2secu​+du​ 其实可以只枚举lca(A,B)l

ModestCoder_的博客 574

[bzoj1509]逃学的小孩

[bzoj1509]逃学的小孩 我是真的没看出来这是一棵树。。。 易得,答案一定是折返了的,然后对于每个中心找最长的三条链 l1 &lt;= l2 &lt;=l3    ans = max { l1 + l2 * 2 + l3 } 然后随便搞搞就没了 代码 #include&lt;bits/stdc++.h&gt; using namespace std; typedef long ...

jerome_wei的博客 285

洛谷P4408 [NOI2003]逃学的小孩

树的直径练习题

Ajwallet 577

luogu P4408 [NOI2003]逃学的小孩(树的直径)

整理的算法模板合集: ACM模板 看了半天的题原来没有告诉你三个点的坐标,不然直接跑最短路即可。要求最长的时间,所以我们要自己找到三个点,而在树中最长的路径也就是树的直径。那么本题就可以简化为:在一棵无根树上,找A,B,CA,B,CA,B,C三个点,使得AB+BC(AC>BC)AB+BC(AC>BC)AB+BC(AC>BC)或AC+AB(BC>AC)AC+AB(BC>AC)AC+AB(BC>AC)最大。 我们假设AC>BCAC>BCAC>BC,那么答

繁凡さん的博客 483

题解:[NOI2003]逃学的小孩

Sol 题目大意 求树的直径,然后再求其余点到直径两端(中最小值)的最大值 题解 首先,一个很显然的结论 从A走到B(或从B走到A)要使得最长的话,就是树的直径,两遍bfs就ok了 然后从C走到A(或B),要使得最长的话,就暴力判一下呗 假设从A走到B最大值为a,从C走到A最大值为b 题目要求你使a+b最大 现在你让a最大,又让b最大 那a+b不久最大了 所以“水题”,就...

Zctoylm的博客 468

【洛谷P4408】逃学的小孩【树的直径】

题目大意: 题目链接:https://www.luogu.org/problemnew/show/P4408 给出一棵树,已知有人一开始在CCC点,要到达AAA点和BBB点(那个近先去哪)。求最坏的情况所需的时间。 思路: 转化题意: 求max(dis[A][B]+min(dis[C][A],dis[C][B]))求max(dis[A][B]+min(dis[C][A],dis[C][B]))求...

stoorz 808

BZOJ1509: [NOI2003]逃学的小孩

1509: [NOI2003]逃学的小孩 Input 第一行是两个整数N(3  N  200000)和M,分别表示居住点总数和街道总数。以下M行,每行给出一条街道的信息。第i+1行包含整数Ui、Vi、Ti(1Ui, Vi  N,1  Ti  1000000000),表示街道i连接居住点Ui和Vi,并且经过街道i需花费Ti分钟。街道信息不会重复给出。

Cynthia_wjyi 2149

解题报告 『[NOI2003]逃学的小孩(树上操作)』

原题地址 今天翻看集训队巨佬写的一篇有关于树形动规的论文时看到了这道题,但感觉并不需要用动规,求出树的直径再暴力枚举一下就搞出来了。 其实是因为我太蔡了,看不懂大佬在写什么orz 代码实现如下: #include <bits/stdc++.h> using namespace std; #define int long long #define rep(i,...

weixin_30585437的博客 207

[NOI2003]逃学的小孩 题解

前言 >原题传送门(洛谷)< 看了一下洛谷题面,这道NOI的题竟然是蓝的(恶评?),做了一下好像确实是蓝的... 解法 思路非常简单,找道树的直径,然后答案是直径长度加上最大的min(dis[pos1], dis[pos2]),pos1和pos2是指定的任意一条直径的两个端点,dis是距离 证明 鉴于这是一棵树(原题面:可以保证,任两个居住点间有且仅有一条通路。) 因此,我们最大的方案...

weixin_30337251的博客 175

[NOI2003]逃学的小孩 树的直径

Description 给你一棵树,求树上一个点到任意两个非这个节点的节点的距离为d1、d2,设d1 < d2,求d1*2+d2的最大值。Sample Input 4 3 1 2 1 2 3 1 3 4 1Sample Output 4你考虑维护一个节点的最长链d1,次长链d2,次次长链d3,且这几条链不在同一个子树。 那其实一个点的影响其实是d1+d2*2+d3。 然后就O(n)做

xgc_woker的博客 226
上一篇: 最短路专题
下一篇: 基环树专题
DarksideCoder
博客等级 码龄7年 34粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值