当前位置: 首页 > news >正文

AT_agc002_d 题解

题意

有一张 \(n\) 个点,\(m\) 条边的无向图,点的编号从 \(1\)\(n\),边的编号从 \(1\)\(m\),第 \(i\) 条边连接定点 \(a_i\)\(b_i\)保证图联通

在这张图上,有 \(Q\) 次询问,每次询问中有一对兄弟进行如下操作:

  • 最开始的时候哥哥在 \(x_i\) 点,弟弟在 \(y_i\) 点,兄弟两人可以通过边从一个点走到另一个点。

  • 兄弟俩需要总计访问恰好 \(z_i\) 个顶点。不过哥哥弟弟都访问的顶点只能算一个。

  • 其中兄弟俩经过的边的编号最大值为代价。兄弟俩希望最小化代价。

求每组兄弟的代价。

题解

看到“边的编号最大值”,考虑建出 kruskal 重构树,边权即为编号。

看到“最小化最大值”,考虑二分。设二分到的答案为 \(p\),则 \(x\)\(y\) 肯定在重构树上一定是尽量向上跳,直到点权超过 \(p\) 为止。此时,\(x\)\(y\) 一定可以去到所有他们的子树的节点,只需要判断两颗子树的大小之和是否 \(\ge z\) 即可。

至于向上跳,可以考虑倍增处理(因为重构树满足从下到上点权单调递增)。复杂度 \(\mathcal{O}(n \log m + q \log^2 n)\)

代码

int n,m,q,x,y,z,cnt,fa[20][200005],siz[200005],d[200005];
struct edge{int x,y;}e[200005];
int Fa[200005];
int find(int x){return Fa[x]^x?Fa[x]=find(Fa[x]):x;}
void merge(int x,int y,int w){x=find(x),y=find(y);if(x==y)return;d[++cnt]=w,Fa[x]=Fa[y]=fa[0][x]=fa[0][y]=cnt,siz[cnt]=siz[x]+siz[y];
}
void kruskal(){iota(Fa+1,Fa+1+2*n,1),fill(siz+1,siz+1+n,1),cnt=n;fo(i,1,m)merge(e[i].x,e[i].y,i);fd(i,cnt,1)fo(j,1,19)fa[j][i]=fa[j-1][fa[j-1][i]];
}
bool check(int x,int y,int z,int w){fd(i,19,0)if(fa[i][x]&&d[fa[i][x]]<=w)x=fa[i][x];fd(i,19,0)if(fa[i][y]&&d[fa[i][y]]<=w)y=fa[i][y];if(x==y)return siz[x]>=z;return siz[x]+siz[y]>=z;
}
void solve(){cin>>n>>m;fo(i,1,m)cin>>e[i].x>>e[i].y;kruskal(),cin>>q;while(q--){cin>>x>>y>>z;int l=1,r=m,mid,ans;while(l<=r){mid=l+r>>1;if(check(x,y,z,mid))ans=mid,r=mid-1;else l=mid+1;}cout<<ans<<'\n';} 
}
http://icebutterfly214.com/news/85274/

相关文章:

  • 【亲测免费】 开源项目html2image常见问题解决方案 - 详解
  • vxe-gantt 甘特图实现产品进度列表,自定义任务条样式和提示信息
  • 策略模式
  • wireshark相关
  • 街头徒手健身3硬核核心训练
  • 主动学习如何优化计算机视觉工作流程
  • qemu如何和宿主机共享文件 - show
  • 2025贵州贵阳荣和酒坊采购渠道推荐!百年传承酱香白酒购买平台TOP5榜单发布,品味历史沉淀的醇香佳酿
  • 冻结预训练层策略为什么冻结
  • Scoop 软件清单与配置信息
  • 权重衰减
  • 问界M8更换轮胎推荐:2025年效率提升80%的推荐
  • 20234320 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 详细介绍:28种CSS3炫酷加载动画:创建引人入胜的网页加载体验
  • RocketMQ优缺点及使用场景以及如何保证消息不丢失
  • 内部网关协议——OSPF 协议(开放最短路径优先)(链路状态路由协议) - 指南
  • 企业智能体化:从系统堆叠到智能体矩阵的组织进化
  • 深入解析:C++ 闭散式和开散式的模拟实现
  • 西门子S7-1200与施耐德Altivar320通讯 工业自动化场景的总线协议转换方案
  • 短剧小程序 2025 核心痛点分析:内容、工艺与合规的三重困境
  • 数据结构(18) - 实践
  • 实用指南:C++幻象:内存序、可见性与指令重排
  • 多项式学习笔记
  • Kubernetes(K8s):核心概念、架构与实战应用全解析
  • Spring Boot:核心概念、核心特性与实战应用全解析
  • 工作备注笔记
  • 12月4日
  • 7.4V锂电池充电芯片 内置快充协议 充电电流2A
  • 2025年箱式可控气氛炉五大品牌排行榜,气氛炉精密型厂家推荐
  • 2025论文降重降AI神器终极对决!用学术猹,AI率轻松降至个位数!