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

news/2026/1/22 17:14:44/文章来源:https://www.cnblogs.com/triwa/p/19518261

​【题目来源】
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.mzph.cn/news/1201071.shtml

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

相关文章

mac文本编辑器

https://gitee.com/cxasm/notepad--/releases/tag/v2.20.1

波形发生器如何构建?基于Verilog打造自己的DDS任意波形发生器

波形发生器在各大行业中均有使用&#xff0c;带来了诸多便利。对于波形发生器&#xff0c;小编在往期文章中做过很多介绍。本文中&#xff0c;主要在于探讨波形发生器的实现过程。具体而言&#xff0c;将介绍基于Verilog实现DDS任意波形发生器。如果你是波形发生器的爱好者&…

深度解析支持CRM系统集成的银行服务机器人技术与主流产品评测

随着银行业数字化转型的深入,线下网点的职能正在经历从“交易中心”向“营销与服务中心”的深刻变革。在这一进程中,智能服务机器人已不再是仅供展示的科技噱头,而是逐渐演变为能够承担实质性工作的“数字员工”。截…

2026 年 AI 摄影培训哪家强?五大优质院校盘点,成都莱特凭实力领跑

引言 随着 AIGC 技术的飞速发展,AI 摄影、短视频创作、视频剪辑与 IP 运营已成为职场新风口,越来越多的人渴望通过专业培训掌握相关技能,无论是职场提升、兴趣深耕还是创业转型,选择一所靠谱的培训学校成为关键。2…

基于Java+SpringBoot+SSM师生互动桥系统(源码+LW+调试文档+讲解等)/师生互动平台系统/师生互动教学系统/互动桥梁系统/师生交流桥系统/教学互动桥系统

博主介绍 &#x1f497;博主介绍&#xff1a;✌全栈领域优质创作者&#xff0c;专注于Java、小程序、Python技术领域和计算机毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2025-2026年最新1000个热门Java毕业设计选题…

工业检测必备:盘点国内外气密性测试仪品牌,哪家更适合你?

在工业生产中,产品的气密性是衡量其质量和性能的重要指标之一。无论是汽车零部件、电子设备,还是食品包装等行业,都需要使用气密性测试仪来确保产品的密封性符合标准。然而,面对市场上琳琅满目的气密性测试仪品牌和…

电商GIF主图压缩教程,专业GIF压缩工具优化攻略

做自媒体配图、电商主图或课件动图时&#xff0c;总遇到选不好GIF 压缩工具、压缩后画质模糊&#xff0c;或是压缩后体积仍不达标无法上传的问题&#xff0c;换多款工具反复调试&#xff0c;既浪费时间又达不到预期效果。不同平台对 GIF 有明确规格要求&#xff1a;微信动图建议…

2026年新加坡PSB学院申请中介核心优势指南:聚焦独特价值与差异化

随着2026年留学市场进一步细分与成熟,申请者的决策逻辑已从“大而全”的泛泛比较,转向对服务机构“王牌优势”的精准识别。根据行业通用观察,在服务内容表面趋同的市场中,机构的独特核心优势已成为决策最关键、最直…

深入解析:Java两种代理模式详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基于Java+SpringBoot+SSM客户股票交易教学系统(源码+LW+调试文档+讲解等)/股票交易教学平台/客户交易指导系统/股票教学系统/客户股票操作教学/股票交易培训系统/客户交易学习系统

博主介绍 &#x1f497;博主介绍&#xff1a;✌全栈领域优质创作者&#xff0c;专注于Java、小程序、Python技术领域和计算机毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2025-2026年最新1000个热门Java毕业设计选题…

测试dify是否可以支持流式http

测试dify是否可以支持流式http先写一个fastapi 流式返回的接口from fastapi import FastAPI from fastapi.responses import StreamingResponseimport asyncio import time from typing import AsyncGenerator, Genera…

微信 GIF 制作技巧?gif 动画制作 5 分钟上手攻略

做自媒体配图、电商主图或课件演示时&#xff0c;总遇到gif 动画制作步骤繁琐、成品画质模糊&#xff0c;或是动画体积过大无法上传、格式不兼容的问题&#xff0c;反复调试却达不到预期效果&#xff0c;白白浪费时间。不同场景对 gif 动画有明确规格要求&#xff1a;微信动图建…

RK平台 自定义 /dev/video节点

修改详情&#xff1a;在 drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c 文件&#xff0c;将&#xff1a;video_register_device(vdev, VFL_TYPE_VIDEO, -1);修改为&#xff1a;video_register_device(vdev, VFL_TYPE_VIDEO, 50);原理说明&#xff1a;video_register_dev…

深圳城区,竟然有座沉睡20多年的“垃圾山”

在深圳罗湖&#xff0c;有座特别的“山”&#xff0c;它不是自然形成的&#xff0c;而是由垃圾堆成的。 这就是玉龙填埋场&#xff0c;一个已经“沉睡”了二十多年的地方。 1983年的时候&#xff0c;深圳还处在高速发展的早期&#xff0c;玉龙填埋场所在的地方&#xff0c;算…

离子色谱仪技术如何适应环保需求?

随着环保理念的深入人心和生态治理的不断深化,环境监测的精准度、高效性、全面性需求持续升级,从传统的常规污染物检测,逐步延伸至痕量、复杂基质污染物监测,以及现场应急、在线连续监控等多元场景。离子色谱仪作为…

基于Java+SpringBoot+SSM家庭医生服务软件(源码+LW+调试文档+讲解等)/家庭医生APP/家庭医生系统/医疗服务软件/在线家庭医生/医生服务应用/家庭健康软件/医疗服务平台

博主介绍 &#x1f497;博主介绍&#xff1a;✌全栈领域优质创作者&#xff0c;专注于Java、小程序、Python技术领域和计算机毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2025-2026年最新1000个热门Java毕业设计选题…

2026年组装式屏蔽室厂家实力榜:局放屏蔽室、焊接式屏蔽室、拼接式屏蔽室、高压屏蔽室、电磁屏蔽室、 磁场屏蔽室、 电波屏蔽室、人防二级屏蔽室、五家企业凭技术与口碑出圈

随着5G、物联网技术的普及,电磁干扰问题日益凸显,屏蔽设备作为核心防护设施,其产品性能与技术可靠性成为市场关注焦点。在屏蔽机房、屏蔽室两大主流品类中,一批兼具创新能力与服务意识的企业脱颖而出。本次结合产品…

2026年新加坡留学中介口碑与案例深度排行:基于真实反馈的客观评测

引言 随着2026年留学规划的全面启动,新加坡作为融合东西方教育精华的枢纽,其热度持续攀升。根据行业追踪数据显示,2025年中国赴新加坡留学生人数已激增60%,总规模突破5万人,新加坡稳固占据中国家庭海外求学目的地…

2026年AI摄影培训学校哪家好?TOP5摄影培训/短视频培训/视频剪辑培训深度推荐

在AIGC技术加速渗透视觉创作领域的2026年,掌握AI摄影、短视频制作、视频剪辑及IP运营等复合技能,已成为摄影师、内容创作者和电商从业者提升竞争力的关键路径。面对市场上众多培训机构,如何甄别真正具备教学实力、合…

应用开发,功能设计要从需求出发

应用开发,功能设计要从需求出发 ​ ——记录一次开发前的框架规划 在一个风和日丽的下午,我如往常一样睡觉摆烂,突然!一个神秘人闯入我的梦境,给了我一个任务,需要我做一个关于违规内容检测的项目。还没…