【算法】数据结构题单练习(寒假正在更新中)

1. 最小距离和(树的重心)

题目: http://oj.daimayuan.top/course/7/problem/529

#include<bits/stdc++.h>
using namespace std;typedef long long ll;const int N = 2e5+5;
const int inf = 0x3f3f3f3f;int n;
int pre[N];
int dist[N];
vector<int> e[N];
int f[N];
int cnt;//求出每个节点到根节点的距离
void dfs(int x){   for(auto y:e[x]){if(y!=pre[x]){pre[y]=x;dist[y]=dist[x]+1;dfs(y);}}
}//计算以当前节点为根节点的子树中的最大深度
void solve(int x){cnt++;for(auto y:e[x]){if(y!=pre[x]){pre[y]=x;solve(y);}}
}int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cin>>n;for(int i=1;i<n;i++){int x,y;cin>>x>>y;e[x].push_back(y);e[y].push_back(x);}//对每个节点,计算其子树中的最大深度for(int i=1;i<=n;i++){f[i]=0;memset(pre,0,sizeof(pre));for(auto y:e[i]){cnt=0;pre[y]=i;solve(y);f[i]=max(f[i],cnt);}}//找到直径的根节点,即子树中最大深度的最小的节点int idx=0,v=1<<30;for(int i=1;i<=n;i++){if(f[i]<v){v=f[i];idx=i;}}memset(dist,0,sizeof(dist));memset(pre,0,sizeof(pre));pre[idx]=-1;dfs(idx);v=0;//计算以idx为根节点的最小距离和int ans=0;for(int i=1;i<=n;i++){ans+=dist[i];}cout<<ans<<"\n";return 0;	}

 2. 树的最近公共祖先 (LCA)

题目: http://oj.daimayuan.top/course/7/problem/531

#include<bits/stdc++.h>
using namespace std;typedef long long ll;const int N = 1001;
const int inf = 0x3f3f3f3f;int n,m;
int dist[N];
vector<int> e[N];
int fa[N];//求出每个点与根节点的距离
void dfs(int x){for(auto y:e[x]){dist[y]=dist[x]+1;dfs(y);}
}int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cin>>n;for(int i=1;i<n;i++){int x,y;cin>>x>>y;e[x].push_back(y);fa[y]=x;}memset(dist,0,sizeof(dist));dfs(1);cin>>m;for(int i=1;i<=m;i++){int x,y;cin>>x>>y;if(dist[x]<dist[y]){swap(x,y);}int z=dist[x]-dist[y];for(int j=1;j<=z;j++){x=fa[x];}while(x!=y){x=fa[x];y=fa[y];}cout<<x<<"\n";}return 0;	}

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

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

相关文章

ARCGIS PRO SDK Geoprocessing

调用原型&#xff1a;Dim gpResult AS IGPResult await Geoprocessing.ExecuteToolAsync(调用工具名称, GPValue数组, environment, null, null, executeFlags) 一、调用工具名称&#xff1a;地理处理工具名称。如面转线&#xff1a;management.PolygonToLine&#xff0c;而非…

吉林大学19、21级计算机学院《计算机网络》期末真题试题

一、21级&#xff08;考后回忆&#xff09; 一、不定项选择&#xff08;一共10个选择题&#xff0c;一个两分&#xff0c;选全得满分&#xff09; 不定项&#xff1a;可以选择1~4个 考点有&#xff1a; ①协议、服务 ②码分多路复用通过接受码片序列&#xff0c;求哪个站点发送…

H5 - - - - - 获取图片exif相关信息

1. EXIF是什么 【可交换图像文件格式】&#xff1a;&#xff08;英语&#xff1a;Exchangeable image file format&#xff0c;官方简称Exif&#xff09;,是专门为数码相机的照片设定的&#xff0c;可以记录数码照片的属性信息和拍摄数据。 2. EXIF 相关标识 { ApertureValu…

代码随想录算法训练营第二十四天 | 回溯算法

理论基础 代码随想录原文 什么是回溯法 回溯也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。 回溯是递归的副产品&#xff0c;只要有递归就会有回溯。 回溯法的效率 虽然回溯法很难&#xff0c;不好理解&#xff0c;但是回溯法并不是什么高效的算法。因为回溯的本…

python CSV库的基本使用

一、简介 CSV文件和TXT文件一样&#xff0c;一种纯文本文件。CSV翻译过来就是 “逗号分割的值” 的首字母缩写。 逗号分割的值意思就是用逗号把不同的值进行分割。 1.CSV文件文件的第一行相当于Excel表格的列名。 2.CSV文件可以通过记事本打开&#xff0c;也可以通过Excel软件…

了解 nextTick

一. 什么是 nextTick 简单的说&#xff0c;nextTick 方法是在 Vue.js 中常见的一种异步更新 DOM 的机制。它的原理是利用 JavaScript 的事件循环机制以及浏览器的渲染流程来实现延迟执行 DOM 更新操作。 它的出现主要是为了解决 Vue 的异步更新导致的 DOM 更新后的操作问题。…

SCA面面观 | 企业该如何选择组件检测工具?

一般来说&#xff0c;一个软件应用程序可以被分解成若干部分&#xff0c;为软件程序解耦&#xff0c;以减少整个应用程序的复杂性&#xff0c;这些部分就是软件组件。以一种标准化的方式相互作用&#xff0c;使得组件可以像机器的“零部件”一样被换入或换出&#xff0c;因组件…

dplayer播放hls格式视频并自动开始播放

监控视频流为hls格式&#xff0c;需要打开或刷新页面自动开始播放&#xff0c;需要安装dplayer和hls.js插件&#xff0c;插件直接npm装就行&#xff0c;上代码 import DPlayer from dplayer import Hls from hls.js //jquery是用来注册点击事件&#xff0c;实现自动开始播放 i…

一个不容忽视的警告WARNING:pip install --upgrade pip

2024年第一篇文章记录下一个很重要的知识点&#xff1a;pip提示升级时&#xff0c;尽量升级。 pip升级的好处&#xff1a; 1、安装速度加快&#xff0c;寻找依赖包的速度更快。 2、解决部分包安装失败&#xff0c;安装不上&#xff0c;不兼容的问题。 所以&#xff0c;如果…

【OpenCV】在MacOS上使用OpenCvSharp

前言 OpenCV是一个基于Apache2.0许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库&#xff0c;它具有C&#xff0c;Python&#xff0c;Java和MATLAB接口&#xff0c;并支持Windows&#xff0c;Linux&#xff0c;Android和Mac OS。OpenCvSharp是一个Op…

Windows异常-解决118及WiFi图标消失问题

注册表修复&#xff1a; 注册表修复 Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog] "ServiceDll"hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,\ 00,74,00,25,00,5c,00,53,00,79,00,…

ubuntu 22 virt-manger(kvm)安装winxp

安装 、启动 virt-manager sudo apt install virt-manager sudo systemctl start libvirtdsudo virt-manager安装windowsXP 安装过程截图如下 要点1 启用 “包括寿终正寝的操作系统” win_xp.iso 安装过程 &#xff1a; 从winXp.iso启动, 执行完自己重启从硬盘重启&#xff0c…

C 练习实例13 - 水仙花数

题目&#xff1a;打印出所有的"水仙花数"&#xff0c;所谓"水仙花数"是指一个三位数&#xff0c;其各位数字立方和等于该数 本身。例如&#xff1a;153是一个"水仙花数"&#xff0c;因为1531的三次方&#xff0b;5的三次方&#xff0b;3的三次方…

太牛了!微信批量自动加好友你还不知道吗?

你还在一个一个地输入号码或微信号&#xff0c;再手动进行搜索添加好友吗&#xff1f;这样不仅费时费力&#xff0c;还可能会出现错误或是漏加的情况。 今天给大家分享一个支持多个微信号自动批量添加好友的宝藏工具&#xff0c;解放你的双手&#xff0c;帮你节省大量的时间和…

【React系列】非父子组件通信—Context.Provider共享数据、events库事件总线通信

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. Context使用 1.1. Context应用场景 非父子组件数据的共享&#xff1a; 在开发中&#xff0c;比较常见的数据传…

【SpringCloud】设计原则之数据一致性与设计模式

一、设计原则之数据一致性 数据一致性分以下几种情况。 强一致性 当更新操作完成之后&#xff0c;任何多个后续进程或线程的访问都会返回最新的更新过的值。这种是对用户最友好的&#xff0c;就是用户上一次写什么&#xff0c;下一次就保证能读到什么。根据 CAP 理论&#…

RBAC基于角色的访问控制

一 什么是RBAC 概念 RBAC 是基于角色的访问控制&#xff08;Role-Based Access Control &#xff09;在 RBAC 中&#xff0c;权限与角色相关联&#xff0c;用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的&#…

Python 设置文件资源锁定

功能背景 使用线程操作或者多个程序同时对同一个excel文件进行读写操作&#xff0c;不可避免的会操作冲突的问题&#xff0c;有没有一种方法就是可以不冲突&#xff0c;而是等待上一个程序使用完成后再对文件进行操作&#xff0c;就是等待一个完成再接着下一个&#xff1f; 实现…

SD杂症:TemporalKit的key关键帧无图片问题

本地安装好temporalkit后&#xff0c;进行Ebsynth预处理后&#xff0c;居然发现key文件夹里&#xff0c;没有一张图片 搜遍百度&#xff0c;搜到了原因&#xff0c;也搜到了解决方案 但是。。。。这个解决方案我觉得很不cool&#xff0c;像个打补丁的老师傅&#xff0c;缝缝补补…

深度掌握GitHub Copilot:提高编码效率的终极指南

引言&#xff1a; GitHub Copilot&#xff0c;作为一款由OpenAI和GitHub合作打造的智能代码助手&#xff0c;正在迅速改变开发者的编码体验。本文将深入研究GitHub Copilot&#xff0c;从安装和基础用法到高级应用和实用技巧&#xff0c;助您充分发挥这一工具在提高编码效率和…