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

洛谷 P10931:闇の連鎖 ← 树上差分(边差分)+ dfs预处理

​【题目来源】
https://www.luogu.com.cn/problem/P10931
https://www.acwing.com/problem/content/354/

【题目描述】
传说中的暗之连锁被人们称为 Dark。
Dark 是人类内心的黑暗的产物,古今中外的勇者们都试图打倒它。
经过研究,你发现 Dark 呈现无向图的结构,图中有 N 个节点和两类边,一类边被称为主要边,而另一类被称为附加边。
Dark 有 N-1 条主要边,并且 Dark 的任意两个节点之间都存在一条只由主要边构成的路径。
另外,Dark 还有 M 条附加边。
你的任务是把 Dark 斩为不连通的两部分。一开始 Dark 的附加边都处于无敌状态,你只能选择一条主要边切断。
一旦你切断了一条主要边,Dark 就会进入防御模式,主要边会变为无敌的而附加边可以被切断。
但是你的能力只能再切断 Dark 的一条附加边。
现在你想要知道,一共有多少种方案可以击败 Dark。
注意,就算你第一步切断主要边之后就已经把 Dark 斩为两截,你也需要切断一条附加边才算击败了 Dark。

【输入格式】
第一行包含两个整数 N 和 M。
之后 N-1 行,每行包括两个整数 A 和 B,表示 A 和 B 之间有一条主要边。
之后 M 行以同样的格式给出附加边。

【输出格式】
输出一个整数表示答案。​​​​​​​

【输入样例】
4 1
1 2
2 3
1 4
3 4

【输出样例】
3

【数据范围】
数据保证,1≤N≤100000,1≤M≤200000,数据保证答案不超过2^31-1。

【算法分析】
● 树上差分
树上差分是一种在树上高效处理路径修改和查询的算法技巧,核心思想是将路径操作转化为对节点差分数组的单点修改,最后通过一次遍历还原出结果。 它特别适合处理‌多次对树上路径进行加减操作,最后查询某个点或边的权值‌这类问题。
(一)核心思想
点差分‌:对路径 (x, y) 上所有点的权值进行修改。通过在 x 和 y 处 +val,在 lca(x,y) 和其父节点处 -val,最后通过 DFS 自底向上求和即可还原路径上的权值。具体操作为:对路径 (x, y) 加 val,执行 diff[x] += val, diff[y] += val, diff[lca] -= val, diff[fa[lca]] -= val。
边差分‌:对路径 (x, y) 上所有边的权值进行修改。通常将边权下放给深度较大的子节点,转化为点权问题,处理方式与点差分类似。具体操作为:对路径 (x, y) 加 val,执行 diff[x] += val, diff[y] += val, diff[lca] -= 2 * val(假设边权下放给子节点)。
(二)适用场景
点差分‌:路径点权修改、子树点权修改、查询点权。
边差分‌:路径边权修改、查询边权。
(三)与其他算法对比
与线段树对比‌:树上差分代码简洁,适合离线操作;线段树支持在线查询,但常数较大。
与树链剖分对比‌:树上差分处理路径修改更高效;树链剖分功能更强大,支持复杂路径查询。

● LCA ← 树上差分常用 LCA
(1)暴力法(向上标记法):https://blog.csdn.net/hnjzsyjyj/article/details/152026341
(2)暴力法(同步前进法‌):https://blog.csdn.net/hnjzsyjyj/article/details/152070927
(3)倍增法(DFS预处理):https://blog.csdn.net/hnjzsyjyj/article/details/152203103
(4)倍增法(BFS预处理):​​​​​​​https://blog.csdn.net/hnjzsyjyj/article/details/152234376

【算法代码】
本题代码中的 dfs1、getLCA、dfs2,与“洛谷 P3258:[JLOI2014] 松鼠的新家”的 dfs1、getLCA、dfs2 完全一致。差别仅在于 main 函数的微小区别。详见:https://blog.csdn.net/hnjzsyjyj/article/details/157249288

#include <bits/stdc++.h>
using namespace std;const int N=1e5+5;
const int LOG=20;
vector<int> g[N];
int dep[N],f[N][LOG+5];
int d[N],a[N];
int ans;void dfs1(int u,int fa) { //preprocessdep[u]=dep[fa]+1;f[u][0]=fa;for(int i=1; (1<<i)<=dep[u]; i++) { //i<=LOGf[u][i]=f[f[u][i-1]][i-1];}for(auto j:g[u]) {if(j!=fa) dfs1(j,u);}
}int getLCA(int u,int v) {if(dep[u]<dep[v]) swap(u,v);for(int i=LOG; i>=0; i--) {if(dep[f[u][i]]>=dep[v]) u=f[u][i];}if(u==v) return u;for(int i=LOG; i>=0; i--) {if(f[u][i]!=f[v][i]) {u=f[u][i],v=f[v][i];}}return f[u][0];
}void dfs2(int u,int fa) {for(int j:g[u]) {if(j==fa) continue;dfs2(j,u);d[u]+=d[j];}
}int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n,m;cin>>n>>m;for(int i=1; i<n; i++) {int u,v;cin>>u>>v;g[u].push_back(v);g[v].push_back(u);}dfs1(1,-1);for(int i=1; i<=m; i++) {int x,y;cin>>x>>y;int lca=getLCA(x,y);d[x]++,d[y]++,d[lca]-=2;}dfs2(1,-1);for(int i=2; i<=n; i++) {if(d[i]==0) ans+=m;else if(d[i]==1) ans++;}cout<<ans<<'\n';return 0;
}/*
in:
4 1
1 2
2 3
1 4
3 4out:
3
*/

 

 

【参考文献】
https://mp.weixin.qq.com/s/dcL51ybKyYj_cvEdTGgSIg
https://blog.csdn.net/hnjzsyjyj/article/details/157249288
https://blog.csdn.net/hnjzsyjyj/article/details/157199762
https://blog.csdn.net/hnjzsyjyj/article/details/157222442
https://blog.csdn.net/hnjzsyjyj/article/details/157245297

 

http://www.jsqmd.com/news/284956/

相关文章:

  • mac文本编辑器
  • ESCMT AI培训:签协议保就业,精准破解转行/提升痛点,筑牢AI职场护城河
  • 波形发生器如何构建?基于Verilog打造自己的DDS任意波形发生器
  • 深度解析支持CRM系统集成的银行服务机器人技术与主流产品评测
  • 2026 年 AI 摄影培训哪家强?五大优质院校盘点,成都莱特凭实力领跑
  • 深入解析:Java两种代理模式详解
  • 基于Java+SpringBoot+SSM师生互动桥系统(源码+LW+调试文档+讲解等)/师生互动平台系统/师生互动教学系统/互动桥梁系统/师生交流桥系统/教学互动桥系统
  • 2026年新加坡PSB学院申请中介核心优势指南:聚焦独特价值与差异化
  • 基于Java+SpringBoot+SSM客户股票交易教学系统(源码+LW+调试文档+讲解等)/股票交易教学平台/客户交易指导系统/股票教学系统/客户股票操作教学/股票交易培训系统/客户交易学习系统
  • 测试dify是否可以支持流式http
  • 微信 GIF 制作技巧?gif 动画制作 5 分钟上手攻略
  • 基于Java+SpringBoot+SSM家庭医生服务软件(源码+LW+调试文档+讲解等)/家庭医生APP/家庭医生系统/医疗服务软件/在线家庭医生/医生服务应用/家庭健康软件/医疗服务平台
  • RK平台 自定义 /dev/video节点
  • 深圳城区,竟然有座沉睡20多年的“垃圾山”
  • 2026年新加坡留学中介口碑与案例深度排行:基于真实反馈的客观评测
  • 2026年组装式屏蔽室厂家实力榜:局放屏蔽室、焊接式屏蔽室、拼接式屏蔽室、高压屏蔽室、电磁屏蔽室、 磁场屏蔽室、 电波屏蔽室、人防二级屏蔽室、五家企业凭技术与口碑出圈
  • 2026年AI摄影培训学校哪家好?TOP5摄影培训/短视频培训/视频剪辑培训深度推荐
  • 应用开发,功能设计要从需求出发
  • 实用指南:ES6冷门API
  • 基于igh开源协议栈和xenomai3实时Linux系统的运动控制器
  • P1144 最短路计数
  • 2026年全国工厂搬迁哪家靠谱?多个厂家核心参考 各类需求全面解析
  • Taro多端研发:2025年AI原生时代的“一次编写,处处智能“终极指南
  • 一站式整体供应方案:博奥森如何为高校、科研院所及药企提供高性价比AD7c-NTP、Ki-67抗体解决方案
  • k8s中pod的场景状态以及故障状态
  • 深度测评8个AI论文写作软件,专科生毕业论文轻松搞定!
  • 移动端办公场景:企业网盘实测移动体验分析
  • 【CDA干货】6个超好用的网站,全流程解决数据分析难题
  • 论文阅读汇总
  • 【论文阅读】AbsoluteZero: ReinforcedSelf-play Reasoningwith Zero Data