最新要闻
- 《长空之王》无悬念领跑!五一档新片总票房破10亿元:你贡献多少?
- 赢麻了!DC:黑人版《超人》有望成为现实
- 金帝纯黑68%巧克力薄片2盒19.9元:浓醇美味
- 全球今亮点!山东齐鲁工业大学官网招生计划 山东齐鲁工业大学官网
- 【天天快播报】新系统基于鸿蒙!华为海外发布4G新机Nova 11i:搭载骁龙680、2200元
- 时讯:高速上2车追尾洒落大量现金 场面壮观:网友直呼想停车去捡 目击者称是冥币
- 气温骤降超10℃!新一轮冷空气来袭:局地暴雨大雪 环球快看
- 全球球精选!Win11虚拟桌面切换动画终于回归!可惜依然生硬
- 天天视讯!“五一”去怒江,穿越东方大峡谷
- 最低分辨率仅648P!《星战绝地:幸存者》PS5版优化同样翻车_环球微动态
- 关注:大学选课是啥_大学选课是什么意思
- 国内普工月薪1万块 父母看病报销!马斯克称特斯拉每个人都是工人 经济严重衰退将来临|全球球精选
- 今年五一国人太疯狂!珠穆朗玛峰凌晨两点还在堵 手冻肿还有人插队 观天下
- 5年级上册语文书课文_5年级上册语文书
- 【天天新视野】《饥饿游戏》美女演员晒照反击黑客勒索:我想展示给谁看都行
- 《英雄联盟》人机“智商”将升级:会打野抢龙了-每日时讯
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
最近公共祖先 倍增算法
(相关资料图)
求最近公共祖先(Lowest Common Ancestor,LCA)例题:洛谷P3379 【模板】最近公共祖先(LCA)https://www.luogu.com.cn/problem/P3379
基本思路就是先用倍增把两点升到同一深度,然后倍增来找最近公共祖先。其中fa数组是关键
#include#include#define forup(i,l,r) for(int i=l;i<=r;i++)#define fordown(i,l,r) for(int i=r;i>=l;i--)using namespace std;const int N =5e5+5;int dep[N],fa[N][20];//fa[u][i]指从u向上跳2^i个结点到达的祖先结点 //2^20大约为一百万,具体为1048576 vector child[N];//结点所连的结点(这里包括了父节点) int read(){int n=0;char m=getchar();while(m<"0"||m>"9") m=getchar();while(m>="0"&&m<="9"){n=(n<<1)+(n<<3)+(m^"0");m=getchar();}return n;}void dfs(int father,int u)//作用是初始化dep和fa数组 {dep[u]=dep[father]+1;fa[u][0]=father;forup(i,1,19)//跳2^i个相当于是先跳2^(i-1)到fa[u][i-1],然后再往上跳2^(i-1)到fa[u][i] {fa[u][i]=fa[fa[u][i-1]][i-1];}for(int v:child[u])//对子节点进行访问 {if(v!=father) dfs(u,v);}}int lca(int u,int v){if(u==v) return u;//特判 if(dep[u]=dep[v])//dep的差=2^x1+2^x2+...+2^xn,故一定可以让u跳到和v同层的地方 {u=fa[u][i]; }}if(u==v) return u;//特判二度 fordown(i,0,19){if(fa[u][i]!=fa[v][i])//让u,v跳到最近公共祖先的下一个,原理同上一个for {u=fa[u][i]; v=fa[v][i];}}return fa[u][0];}int main(){int n,m,root;n=read(),m=read(),root=read();forup(i,1,n-1)//建树{int u,v;u=read(),v=read();child[v].push_back(u);child[u].push_back(v);}dfs(0,root);//作用是初始化dep和fa数组 forup(i,1,m)//查询 {int u,v;u=read(),v=read();cout<
另外,当深度对应的结点数不那么明朗的时候比如不清楚n是2的多少次方,或者需要优化的时候,可以预处理一个lg数组来判断需要最多跳多少层,注意lg里面是深度或深度差递推公式为lg[i]=lg[i-1]+((1<<(lg[i-1]+1))==i)
#include#include#define forup(i,l,r) for(int i=l;i<=r;i++)#define fordown(i,l,r) for(int i=r;i>=l;i--)using namespace std;const int N =5e5+5;int dep[N],fa[N][20];//fa[u][i]指从u向上跳2^i个结点到达的祖先结点 //2^20大约为一百万,具体为1048576 int lg[N];//lg为log2(n)vector child[N];//结点所连的结点(这里包括了父节点) int read(){int n=0;char m=getchar();while(m<"0"||m>"9") m=getchar();while(m>="0"&&m<="9"){n=(n<<1)+(n<<3)+(m^"0");m=getchar();}return n;}void dfs(int father,int u)//作用是初始化dep和fa数组 {dep[u]=dep[father]+1;fa[u][0]=father;forup(i,1,lg[dep[u]])//跳2^i个相当于是先跳2^(i-1)到fa[u][i-1],然后再往上跳2^(i-1)到fa[u][i] {fa[u][i]=fa[fa[u][i-1]][i-1];}for(int v:child[u])//对子节点进行访问 {if(v!=father) dfs(u,v);}}int lca(int u,int v){if(u==v) return u;//特判 if(dep[u]dep[v]) {u=fa[u][lg[dep[u]-dep[v]]];//2^lg始终小于等于dep的差 }if(u==v) return u;//特判二度 fordown(i,0,lg[dep[u]]){if(fa[u][i]!=fa[v][i])//让u,v跳到最近公共祖先的下一个{u=fa[u][i]; v=fa[v][i];}}return fa[u][0];}int main(){int n,m,root;n=read(),m=read(),root=read();forup(i,2,n){lg[i]=lg[i-1]+((1<<(lg[i-1]+1))==i);//在此之前i都是处于[2^lg[i-1],2^lg[i])之间的数,即2^lg[i-1]*2>i } forup(i,1,n-1){int u,v;u=read(),v=read();child[v].push_back(u);child[u].push_back(v);}dfs(0,root);//作用是初始化dep和fa数组 forup(i,1,m)//查询 {int u,v;u=read(),v=read();cout<
至于为什么不直接用c++自带的log函数,因为log比20快但是比lg数组慢
参考:https://www.cnblogs.com/dx123/p/16320461.htmlhttps://blog.csdn.net/weixin_45697774/article/details/105289810次方表:https://blog.csdn.net/weixin_44827418/article/details/106355287
关键词:
天天微速讯:C# 基础编程题集锦
最近公共祖先 倍增算法
《长空之王》无悬念领跑!五一档新片总票房破10亿元:你贡献多少?
赢麻了!DC:黑人版《超人》有望成为现实
金帝纯黑68%巧克力薄片2盒19.9元:浓醇美味
全球今亮点!山东齐鲁工业大学官网招生计划 山东齐鲁工业大学官网
【天天快播报】新系统基于鸿蒙!华为海外发布4G新机Nova 11i:搭载骁龙680、2200元
时讯:高速上2车追尾洒落大量现金 场面壮观:网友直呼想停车去捡 目击者称是冥币
气温骤降超10℃!新一轮冷空气来袭:局地暴雨大雪 环球快看
全球球精选!Win11虚拟桌面切换动画终于回归!可惜依然生硬
天天视讯!“五一”去怒江,穿越东方大峡谷
最低分辨率仅648P!《星战绝地:幸存者》PS5版优化同样翻车_环球微动态
关注:大学选课是啥_大学选课是什么意思
国内普工月薪1万块 父母看病报销!马斯克称特斯拉每个人都是工人 经济严重衰退将来临|全球球精选
今年五一国人太疯狂!珠穆朗玛峰凌晨两点还在堵 手冻肿还有人插队 观天下
新消息丨lua基础语法篇一
5年级上册语文书课文_5年级上册语文书
【天天新视野】《饥饿游戏》美女演员晒照反击黑客勒索:我想展示给谁看都行
《英雄联盟》人机“智商”将升级:会打野抢龙了-每日时讯
苹果的糖煮制脯技术 下_关于苹果的糖煮制脯技术 下的简介
人类希望!星舰并未失败 今年砸20亿美元重发射 马斯克详解爆炸细节厉害了
LC 3. 无重复字符的最长子串 全球实时
世界实时:SRIO接口卡航电总线解决方案
Java线程池中的四种拒绝策略
全球播报:我在画画的拼音_画画的拼音
这波太狠了!CMA禁止微软在未来10年内收购动暴 热点聚焦
世界看热讯:中文互联网青春流落“天涯”
资讯推荐:山东一景区霸气公告:看不到景观退款
天玑之王诞生!iQOO Neo8 Pro前瞻:性能霸榜安卓阵营
快看:真鞋底“烤机”!男子鞋里藏48块CPU入境被海关查获
速看:恐难回本:《圣斗士》电影日本上映3天票房仅250万
关于Linux系统-sshd服务-AllowUsers与AllowGroups-选项的安全加固配置
工厂方法与FactoryBean
9472米!我国开钻亚洲最深油气井
今日讯!apex英雄手游版什么时候上线 apex英雄手游上线时间一览
70%的人都没做到!夏季开空调前的这些事项必须做到位_环球新要闻
韩国芯片继续暴跌:三星等存储没人买!国产SSD无惧竞争 2TB杀到489元
全球微速讯:终于改了!微软决定减少Win11通知数量
海南一漂流景区五一堵船了 网友:好像在下饺子一样
短讯!孙晓玲
多亏了国产SSD!硬盘进入“白菜价”时代
当前资讯!3人合吃一份自助餐:服务员劝阻被怼
苹果华为小米OPPO和vivo手机壳只要5.9元起:覆盖上百款机型 总有一款适合你
回力2023春季新款老爹运动鞋到手29.9元起:舒适透气_全球看点
马里奥成就游戏改编作品之最_天天热资讯
“五一”假期第二天全国道路交通总体平稳有序-全球最新
马里奥成就游戏改编作品之最
环球快消息!疯狂!淄博烧烤店主为劝退游客自己刷差评 犄角旮旯里的烧烤店都能被发现
锐龙7000系烧毁问题解决:AMD推送AGESA 1.0.0.7 BIOS主板固件更新
2020赛季中超第一阶段第11轮苏州赛区的一场比赛 由河北华夏幸福对阵北京国安
国屏之光!京东方首发三百色域切换显示技术
环球消息!五一长沙排队:景点队伍排到隔壁景区 凌晨2点打车还得等位
Redmi 2023年快充之王来了!210W新机已在路上|天天通讯
QLC尚未普及HLC又来!写入寿命堪忧
生死狙击v8真号账号密码没人挤2022(生死狙击好号和密码v8真的电脑版)
读SQL进阶教程笔记14_SQL编程要点
全球热门:Android 14来了!本月登场
印度将成全球人口最多国家背后:年轻人多、文化程度太低
5G必要专利全球第一!网友分享华为5G工程测试手机 早开始实测 世界新视野
屋漏原指的是屋子西北角 而不是屋子漏了 环球看热讯
速讯:5月新规来了!官方出手整治互联网弹出广告:确保一键关闭
全球快资讯丨奥利瑟拉佐尔的烈焰之爪在哪里_奥利瑟拉佐尔的烈焰之爪
天天通讯!丁立人创造历史 中国棋手首次加冕世界棋王:奖金830多万
我做梦也没想到 华语乐坛竟以这种形式复兴了
一公司称“小气吧啦的特斯拉”“毛坯房汽车”!被判赔10万
神剧情!利物浦前15分钟3-0领先,热刺连追三球后遭若塔补时绝杀 天天速讯
《逆水寒手游》评测:这次呼吸不要钱了
重点聚焦!安徽工业大学怎么样 是二本吗一还
19 组织文件
焦点热讯:移位运算
特种兵式旅游引发热议 男子火车站拎1袋馒头沾方便面吃:该省省该花花 每日聚焦
五一假期才第2天网友已经玩累:敦煌“堵骆驼”了 还有红绿灯 天天快讯
林正英粤语电影黑白双煞 林正英粤语电影 天天即时看
关于PTA第二次大作业的总结-热点
世界微动态丨200公里开车11个半小时!女子吐槽五一旅游导航都堵紫了
环球观察:延庆治理有“妙招儿”,多举措解决杨柳飞絮烦恼~
联想65W氮化镓插排上架:出差不用带电源了 全球今日报
智能手机价格越来越贵 联发科CEO表态:不再打价格战
17 设备处理内核I/O包 天天看点
当前报道:车头神似动车组 理想纯电MPV假想图曝光
中国空间站将收到70公斤水果快递 天舟六号货运飞船5月上旬发射-全球视讯
Black Girl Gamers创始人批评幻想游戏:可以有龙 但不能有黑人
快看:征服世界最高沙峰!比亚迪仰望U8登顶必鲁图峰:不陷沙、不翻车 真越野
16 内核中注册设备_世界今亮点
PTA题目集4~6总结
全球热点评!详细的BoltDB学习记录文档
看点:OO题目集4-6总结
金融类都有什么-金融类都有什么专业 天天即时看
“五一”迎来客流高峰 各部门全力保障旅客出行
蔚来五一换电量创历史新高 车主高速薅免费电池4万块_世界今日报
《王者荣耀》妲己九尾“收割”女玩家:实体手办1199元
苹果树桃树缓控修剪新技术_关于苹果树桃树缓控修剪新技术的简介 环球微动态
宁波地铁全天免费坐 五一延长1小时 有站点人流暴涨200%|世界快看
今年的五一“疯”了吗?网友:走不动 根本走不动
太科幻!比亚迪深圳云巴开通:全自动运行、刷脸进站、无感支付
AMD Yes!一文了解锐龙Z1处理器:为掌机而生 天天热头条
天天热头条丨让AI画“边打游戏边吃意面” AI毅然让玩家啃了手柄
要闻速递:性能_1 Jmeter脚本编写
《饥荒联机版》在线人数破纪录 Steam史低只要4.8元
评论区被疯狂玩梗 抖音网红女骑手:何必恶语相对