【Atcoder】 [ARC156C] Tree and LCS

news2025/2/3 6:55:06

题目链接

Luogu方向
Atcoder方向

题目解法

手玩几个小数据之后可以猜测最小的最大相似度一定为1

考虑构造:每次找到2个叶子,交换权值,然后删掉(最后如果剩下一个点权值不变)
证明:
首先可以证明最大的相似度一定 > = 1 >=1 >=1
首先可以知道最大相似度一定是在极长的路径中(即无法再扩充的路径)
考虑 u , v u,v u,v 之间的路径

  1. 路径中没有 2 2 2 个点匹配
    那么每个点(可能除了根)一定和路径外的点匹配且交换了权值,那么这条路径中一定没有点的权值(可能除了根)与路径上其他点的编号相同,所以相似度最多为 1 1 1(即根无法匹配)
  2. 路径中有 2 2 2 个点匹配

令在 u − l c a u-lca ulca 的路径上匹配的点为 x x x,在 v − l c a v-lca vlca 的路径上匹配的点为 y y y
可以证明 x , y x,y x,y 一定不同时在 u − l c a u-lca ulca v − l c a v-lca vlca 的路径上,因为父亲一定比儿子晚删
所以可以有这样一张图:在这里插入图片描述
考虑在 u − x u-x ux 上的点 p p p,它匹配的点 q q q 有2种情况
3. q q q u − v u-v uv 的路径上,那么 q q q 一定在 v − y v-y vy
如果在 y − l c a y-lca ylca 上,那么 p p p x x x 早删, q q q y y y 晚删, x , y x,y x,y 同时删,矛盾
4. q q q 不在 u − v u-v uv 的路径上,不用考虑,没有影响

所以说 u − v u-v uv 的路径是类似关于 l c a lca lca 对称的
u − l c a u-lca ulca 的从下到上的点在 v − l c a v-lca vlca 上的对应点也是从下到上的
v − l c a v-lca vlca 的同理
所以该构造最小的最大相似度为1

#include <bits/stdc++.h>
using namespace std;
const int N(5100);
int n,deg[N],val[N]; 
int que[N],hh,tt=-1;
int e[N<<1],ne[N<<1],h[N],idx;
inline int read(){
	int FF=0,RR=1;
	char ch=getchar();
	for(;!isdigit(ch);ch=getchar()) if(ch=='-') RR=-1;
	for(;isdigit(ch);ch=getchar()) FF=(FF<<1)+(FF<<3)+ch-48;
	return FF*RR;
}
void add(int a,int b){ e[idx]=b,ne[idx]=h[a],h[a]=idx++;}
int main(){
	n=read();
	memset(h,-1,sizeof(h));
	for(int i=1,x,y;i<n;i++) x=read(),y=read(),add(x,y),add(y,x),deg[x]++,deg[y]++;
	for(int i=1;i<=n;i++) if(deg[i]==1) que[++tt]=i;
	while(hh<=tt){
//		cout<<hh<<' '<<tt<<' '<<que[hh]<<'\n';
		if(hh==tt){ val[que[hh]]=que[hh];break;}
		int u=que[hh++],v=que[hh++];
		val[u]=v,val[v]=u; 
		for(int i=h[u];~i;i=ne[i]){
			deg[e[i]]--;
			if(deg[e[i]]==1) que[++tt]=e[i];
		}
		for(int i=h[v];~i;i=ne[i]){
			deg[e[i]]--;
			if(deg[e[i]]==1) que[++tt]=e[i];
		}
	}
	for(int i=1;i<=n;i++) printf("%d ",val[i]);
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/762266.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【微服务实战之Docker容器】第三章-镜像仓库

系列文章目录 【微服务实战之Docker容器】第一章-下载及安装 文章目录 系列文章目录Docker镜像提交本地镜像发布到阿里云阿里云镜像下载到本地使用本地镜像发布到私有库 Docker镜像提交 docker commit提交容器副本使之成为一个新的镜像docker commit -m“提交的描述信息” -a…

2023年网络安全需把握十大趋势

过去的2022年&#xff0c;网络安全继续成为全社会的关注焦点。网络战在俄乌冲突中风头尽出&#xff1b;勒索攻击给企业造成的损失触目惊心&#xff1b;数据泄露事件愈发频繁、甚至威胁社会安全&#xff1b;供应链攻击无处不在……网络安全已经成为发展的先决条件。 2023年是贯…

【大模型】AutoDL 快速使用

网站&#xff1a;https://www.autodl.com/ BUY 性价比之选&#xff1a;NVIDIA RTX A5000 / 24GB PS&#xff1a;CUDA版本 -12.0 PS&#xff1a;Pytorch/2.0.0/3.8(ubuntu20.04)/11.8 Use Tips git clone 慢 学术资源加速 source /etc/network_turbo切换pip 阿里源

TCP文件传输功能

实现代码 tcp.h #ifndef _TCP_H_ #define _TCP_H_#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <netinet/tcp.h> #include <strings.h> #include <…

链表的简单示意

链表的实质就是指针。存放下一个元素的地址。 typedef struct spy {char * name ;struct spy * next; }spy ,*p_spy;spy A {A,NULL}; spy B {B,NULL}; spy C {C,NULL};int main() {p_spy &A;A.next&B;//A是一个结构体变量&#xff0c;A.next是对这个结构体变量的引用。…

MySQL八股学习记录4事务的实现from小林coding

MySQL八股学习记录4事务的实现from小林coding 事务的概念与特性并行事务引发的问题脏读不可重复读幻读 MySQL的应对策略InnoDB引擎可重复读详解ReadView在MVCC中的工作方式两种隔离级别通过MVCC实现幻读被完全解决了吗 事务的概念与特性 概念:一个操作要么执行成功,要么回滚到…

Matplotlib subplots()函数详解

matplotlib.pyplot模块提供了一个 subplots() 函数&#xff0c;它的使用方法和 subplot() 函数类似。其不同之处在于&#xff0c;subplots() 既创建了一个包含子图区域的画布&#xff0c;又创建了一个 figure 图形对象&#xff0c;而 subplot() 只是创建一个包含子图区域的画布…

面试题揭秘:Spring Boot 自动配置原理是什么?

大家好&#xff0c;我是你们的小米。在过去的几年里&#xff0c;Spring Boot已经成为了Java开发领域中最受欢迎的框架之一。它以其简化的开发方式和强大的功能而闻名于世。今天&#xff0c;我们来揭秘一个常见的面试题&#xff1a;Spring Boot自动配置原理是什么&#xff1f;让…

针对汽配企业的生产难点,提出MES管理系统解决方案

随着汽车产业的快速发展&#xff0c;汽配企业面临着越来越多的生产难点&#xff0c;如生产过程不透明、效率低下、质量控制困难等。为了应对这些挑战&#xff0c;引入MES生产管理系统成为了一种有效的解决方案。本文将探讨MES生产管理系统在汽配企业中的应用&#xff0c;以及它…

【江西省研究生数学建模竞赛】第一题 蒸汽发生器倒U型管内液体流动 70页论文及MATLAB代码

【江西省研究生数学建模竞赛】题目之一 蒸汽发生器倒U型管内液体流动 70页论文及MATLAB代码 相关链接 【江西省研究生数学建模竞赛】第一题 蒸汽发生器倒U型管内液体流动 70页论文及MATLAB代码 【江西省研究生数学建模竞赛】第一题 蒸汽发生器倒U型管内液体流动 70页论文及MA…

如何顺势而为,让ChatGPT为教育所用?

恐惧和回避无法阻挡科技的浪潮&#xff0c;教育与AI的深度融合时代已经到来&#xff0c;如何把AI当做工具&#xff0c;把其成为教育的机会而非威胁&#xff0c;是教育体系未来不得不得面对的新变化。 接受ChatGPT作为一种教学辅助工具&#xff0c;成为教师的朋友或者帮手&…

备战秋招010(20230717)

文章目录 前言一、基础1、网络模型01、OSI 七层02、TCP/IP 四层04、Linux 网络协议栈05、问题 2、常见的网络协议01、应用层02、传输层03、网络层 3、输入网址到网页显示过程01、基础02、DNS 解析03、URL 和 URI 二、HTTP1、基础01、概念02、状态码03、无状态 2、Get 和 Post01…

element-ui select数据回显显示数字的问题 el-select校验失效出现阿拉伯数字问题

初始化参数 return {fields: [{"title":"景区","id":0},{"title":"酒店","id":1}],evaluates: [{"title":"好评","id":0},{"title":"中评","id":1…

【Linux】- Linux 磁盘分区、挂载

Linux 磁盘分区、挂载 1.1 Linux 分区1.2 硬盘说明1.3 磁盘情况查询 1.1 Linux 分区 原理介绍 Linux 来说无论有几个分区&#xff0c;分给哪一目录使用&#xff0c;它归根结底就只有一个根目录&#xff0c;一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系…

SAP AES encrypt

加密算法简介: 加密技术通常分为两大类:"对称式"和"非对称式"。 对称性加密算法&#xff1a;对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的&#xff0c;之后便是对数据进行加解密了。对称加密算法…

【近场社交项目】数据库系统期末设计——逻辑设计部分

【近场社交项目】数据库系统期末设计——逻辑设计部分&#x1f60e; 前言&#x1f64c;3.2逻辑设计1、各个表的二维表&#xff1a;2. 用户信息ER图转换为逻辑和关系模型&#xff1a;3. 用户进行下单业务的ER图转换为逻辑关系模型4. 用户充值会员业务ER图转换为逻辑关系模型5. 用…

springboot实现全局异常捕获

导言&#xff1a; 为什么要做异常处理&#xff1a; 原因有三&#xff1a; 1、将系统产生的全部异常统一捕获处理。 2、自定义异常需要由全局异常来捕获。 3、JSR303规范的validator参数校验器、参数校验不通过、本身无法使用try…catch 其实对于前后端分离的项目做异常处理…

ROS:导航功能详解

目录 一、导航简介1.1导航概念1.2导航作用1.3导航模块简介1.3.1全局地图1.3.2自身定位1.3.3路径规划1.3.4运动控制1.3.5环境感知 1.4导航条件1.4.1硬件1.4.2软件 二、坐标系2.1坐标系简介2.2坐标系特点2.3坐标系变换 三、导航功能实现3.1SLAM建图3.1.1gmapping简介3.1.2gmappin…

【VUE】解决VU2项目图片视频加载缓慢/首屏加载白屏的问题

1 问题描述 前端项目中&#xff0c;有时候会出现图片视频加载缓慢、首屏加载白屏的问题 之前写了一篇在VU3项目中的解决方案&#xff0c; 现在讲一下在 Vue2 项目中的解决方法&#xff0c;方法思路都差不多&#xff0c;在代码示例上会有一些小差别 2 原因分析 通常是由以下原因…

辅助驾驶功能开发-功能规范篇(22)-6-L2级辅助驾驶方案功能规范

1.3.6 ELK 系统功能定义 ELK全称Emergency Lane Keeping&#xff0c;即紧急车道保持。当车辆与道路边界护栏&#xff08;包含隔离带护栏、路锥、水马&#xff09; 有碰撞危险或当车辆正偏出道路边沿且存在“对向来车”或“后向来车”与本车有碰撞风险时&#xff0c;通过给与转向…