当前位置: 首页 > 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://www.jsqmd.com/news/64464/

相关文章:

  • smartbits是啥
  • 每日反思(2025年12月6号)
  • 12.6笔记
  • 【亲测免费】 开源项目html2image常见问题解决方案 - 详解
  • vxe-gantt 甘特图实现产品进度列表,自定义任务条样式和提示信息
  • 2025最新东莞简餐快餐菜品研发培训服务商/厂家TOP5评测!全链条赋能+实战落地权威榜单发布,助力餐饮品牌破解同质化难题
  • 2024 MUCAR BT200 PRO OBD2 Scanner: Full System Diagnostic 15 Resets Wireless Code Reader
  • 数字马力二面准备-后端开发郑州岗(校招)
  • 完整教程:新手做网站如何被百度快速收录教程
  • [豪の算法奇妙冒险] 代码随想录算法训练营第十五天 | 110-平衡二叉树、257-二叉树的所有路径、404-左叶子之和、222-完全二叉树的节点个数
  • 12月6日总结 - 作业----
  • 11.6
  • 触摸未来2025-11-09:万有力,图论革命 - 指南
  • Linux内核学习记录
  • CSP2024 游记
  • 12.6(1)
  • 如何调代码
  • ret2libc+一点点保护
  • AlmaLinux下mysql 8安装与数据迁移
  • ICPC Region 游记
  • 12.6(2)
  • Replicate 加入 Cloudflare:构建网络即计算机的下一代 AI 基础设施
  • abc435_f
  • Ubuntu下,MySQL修改端口号
  • 记CACC 2025区域赛
  • K8S中Ingress的采用
  • 深入解析:Chrome插件:实现Axure RP HTML原型的便捷预览
  • Ubuntu下,MySQL查询报错sql_mode=only_full_group_by
  • CRNN
  • 2025年广东地区湘菜供应链江西小炒社区厨房称重自选食材配送服务商TOP5评测!全品类供应+定制化服务权威榜单发布,赋能餐饮高效运营