【p3128、LQB14I砍树】树上差分

文章目录

  • 差分
  • 树上差分
  • p3128
  • LQB14I砍树
    • 题目
    • 解题步骤
    • 代码样例

差分

差分数组求法:
设原始数组是arr,差分数组是b

  • b[0] = arr[0];
  • b[i] = arr[i] - arr[i-1];

在这里插入图片描述
如果我们要对图中2-4区间的数每个都加上3,就可以在差分数组2的位置加上3,在差分数组4的后一个元素即5的位置减去一个3(目的是消除3对后面区间的影响),再对差分数组前缀和即可完成。

树上差分

多次对树上路径做加法操作,然后询问对某个点操作后的值,适用树上差分。

差分数组求法:

  • 叶子节点的差分值是叶子节点的权重
  • 其他节点的差分值是权-子权和

在这里插入图片描述

  • 权 = 差分值 + 子权和

p3128

LQB14I砍树

题目

题目信息:
给定一棵由 n 个结点组成的树以及 m 个不重复的无序数对 (a1, b1), (a2, b2),
. . . , (am, bm),其中 ai 互不相同,bi 互不相同,ai ≠ bj(1 ≤ i, j ≤ m)。
小明想知道是否能够选择一条树上的边砍断,使得对于每个 (ai , bi) 满足 ai和 bi 不连通,如果可以则输出应该断掉的边的编号(编号按输入顺序从 1 开始),否则输出 -1.

输入输出:
输入共 n + m 行,第一行为两个正整数 n,m。
后面 n − 1 行,每行两个正整数 xi,yi 表示第 i 条边的两个端点。
后面 m 行,每行两个正整数 ai,bi。

一行一个整数,表示答案,如有多个答案,输出编号最大的一个。

输入:
6 2
1 2
2 3
4 3
2 5
6 5
3 6
4 5
4

输出:
4

解题步骤

  1. 要使砍掉一条边后每一数对都不连通,就要让所有数对都经过这条边。
  2. 将边权下移到点上,对x和y两点间的操作变为:s[x]++;s[y]++;s[LCA(x,y)]-=2;(其中s是差分数组)。
  3. 操作完成后,如果有边的权值恰好等于m,更新答案。

代码样例

#include <bits/stdc++.h>
using namespace std;

const int N = 1e5+5;

int n,m,dep[N],fa[N][21],ans,s[N];

vector<int> e[N],num[N];

void dfs(int u,int father){
	dep[u] = dep[father] + 1;
	fa[u][0] = father;
	for(int i = 1;i<=20;i++){
		fa[u][i] = fa[fa[u][i-1]][i-1];
	}
	for(int i = 0;i<e[u].size();i++){
		int v = e[u][i];
		if(v == father) continue;
		dfs(v,u);
	}
}

int LCA(int u,int v)
{
	if(dep[u] < dep[v]) swap(u,v);
	for(int i = 20;i>=0;i--){
		if(dep[fa[u][i]] >= dep[v]) u = fa[u][i];
	}
	if(u == v) return u;
	for(int i = 20;i>=0;i--){
		if(fa[u][i] != fa[v][i]) u = fa[u][i] , v=fa[v][i];
	}
	return fa[u][0];
}

void dfs2(int u,int Fa)
{
	for(int i = 0;i<e[u].size();i++){
		int v = e[u][i], p = num[u][i];
		if(v == Fa) continue;
		dfs2(v,u);
		s[u] += s[v];
		if(s[v] == m) ans=max(ans,p);
	}
//	if(s[u] == m) ans=max(ans,p);
} 


int main()
{
	cin >> n >> m;
	for(int i = 1;i<n;i++)
	{
		int x,y;cin >> x >> y;
		e[x].push_back(y);
		e[y].push_back(x);
		
		num[x].push_back(i);
		num[y].push_back(i);
		
	}	
	dfs(1,0);	
	//差分
	for(int i = 1;i<=m;i++)
	{
		int a,b;cin >> a >> b;
		s[a]++;s[b]++;s[LCA(a,b)]-=2;
	} 
	//统计结果 
	dfs2(1,0);
	cout << ans << endl;
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/435471.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

三、统计语言模型(N-gram)

为了弥补 One-Hot 独热编码的维度灾难和语义鸿沟以及 BOW 词袋模型丢失词序信息和稀疏性这些缺陷&#xff0c;将词表示成一个低维的实数向量&#xff0c;且相似的词的向量表示是相近的&#xff0c;可以用向量之间的距离来衡量相似度。 N-gram 统计语言模型是用来计算句子概率的…

tomcat基础介绍

目录 一、Tomcat的基本介绍 1、Tomcat是什么&#xff1f; 2、Tomcat的配置文件详解 3、Tomcat的构成组件 6、Tomcat的请求过程 一、Tomcat的基本介绍 1、Tomcat是什么&#xff1f; Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器…

【力扣 - 三数之和】

题目描述 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。…

【C++精简版回顾】21.迭代器(未完成)

1.什么是迭代器&#xff1f; 用来遍历容器&#xff0c;访问容器数据。 2.迭代器使用 1.初始化 //初始化 list<int> mylist;//list的整数对象 list<int>::iterator iter;//list内部类&#xff0c;迭代器对象(正向输出) list<int>::reverse_iterator riter;//…

大数据开发-Hadoop之MapReduce

文章目录 MapReduce原理剖析MapReduce之Map阶段MapReduce之Reduce阶段WordCount分析多文件WordCount分析 实战wordCount案例开发 MapReduce原理剖析 MapReduce是一种分布式计算模型,主要用于搜索领域&#xff0c;解决海量数据的计算问题MapReduce由两个阶段组成&#xff1a;Ma…

论文笔记:Compact Multi-Party Confidential Transactions

https://link.springer.com/chapter/10.1007/978-3-030-65411-5_21 A compact, private, Multi-Party Confidential Transactions (MCT) 紧凑型多方机密交易&#xff08;Compact MCT&#xff09;&#xff1a;MCT的长度与常规的单一所有者交易一样短&#xff1b;换句话说&…

ABAQUS软件报价费用 abaqus正版购买价格多少钱?

ABAQUS软件可以完成哪些模拟&#xff1f; ABAQUS软件是一套功能强大的工程模拟的有限元软件&#xff0c;其解决问题的范围从相对简单的线性分析到许多复杂的非线性问题。ABAQUS软件中包含了一套丰富的单元库&#xff0c;可模拟任意几何形状&#xff1b;还包含了各种类型的材料…

第十四届校模拟赛第一期(一)

“须知少时凌云志&#xff0c;自许人间第一流” 鄙人11月八号有幸参加学校校选拔赛&#xff0c;题型为5道填空题&#xff0c;5道编程题&#xff0c;总时间为4小时。奈何能力有限&#xff0c;只完成了5道填空和3道编程大题&#xff0c;现进行自省自纠&#xff0c;分享学习&#…

【系统安全加固】Centos 设置禁用密码并打开密钥登录

文章目录 一&#xff0c;概述二&#xff0c;操作步骤1. 服务器端生成密钥2. 在服务器上安装公钥3.下载私钥到本地&#xff08;重要&#xff0c;否则后面无法登录&#xff09;4. 修改配置文件&#xff0c;禁用密码并打开密钥登录5. 重启sshd服务6. 配置xshell使用密钥登录 一&am…

Anaconda prompt运行打开jupyter notebook 指令出错

一、打不开jupyter notebook网页 报错如下&#xff1a; Traceback (most recent call last): File “D:\anaconda3\lib\site-packages\notebook\traittypes.py”, line 235, in _resolve_classes klass self._resolve_string(klass) File “C:\Users\DELL\AppData\Roaming\Py…

MATLAB知识点:循环语句的经典练习题:二分搜索

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自​第4章&#xff1a;MATLAB程序流程控制 这个例题我们…

小白跟做江科大51单片机之LCD1602滚动显示效果

1.查看原理图 图1 LCD1602接口 图2 LCD1602与STC的接口 2.编写代码 图3 时序结构 根据时序结构编写命令和写入数据代码 #include <REGX52.H> #include "Delay.h" sbit LCD1602_ENP2^7; sbit LCD1602_RSP2^6; sbit LCD1602_WRP2^5; #define LCD1602_lCD0 …

css补充(上)

有关字体 1.所有有关字体的样式都会被继承 div {font-size: 30px;}<span>777</span> <div>123<p>456</p> </div>span中777是默认大小16px div设置了30px p作为div的后代继承了字体样式也是30px 2.字体颜色 div{color: red;border: 1px …

[java] 23种设计模式之责任链模式

1.1例子 公司请假系统&#xff0c;业务逻辑如下&#xff1a; 不超过3天的&#xff0c;组长审批 超过3天且小于7天的&#xff0c;总监审批 超过7天且小于15天的&#xff0c;部长审批 超过15天&#xff0c;前端直接拒绝&#xff0c;不会进入审批流程&#xff08;违反了公司的请假…

Stable diffusion零基础课程

该课程专为零基础学习者设计&#xff0c;旨在介绍和解释稳定扩散的基本概念。学员将通过简单易懂的方式了解扩散现象、数学模型及其应用&#xff0c;为日后更深入的科学研究和工程应用打下坚实基础。 课程大小&#xff1a;3.8G 课程下载&#xff1a;https://download.csdn.ne…

如何理解和利用好点对点传输?

在当今数字化时代&#xff0c;数据传输已成为企业和个人日常工作的核心部分。点对点传输&#xff08;P2P&#xff09;作为一种高效的数据交换方式&#xff0c;正逐渐成为网络通信的主流。本文将探讨如何理解和利用点对点传输&#xff0c;分析其优缺点&#xff0c;并介绍镭速如何…

绝地求生:收纳控福音!老登教你怎么塞满三级包最划算!

大家好&#xff0c;我是闲游盒~ 作为一个5000小时的PUBG老登&#xff0c;我认为这个绝地求生这个游戏&#xff0c;抛开外挂不谈&#xff0c;是一个非常有意思的FPS游戏&#xff0c;不论是要强度还是要趣味&#xff0c;大多数玩家都能在这里找到想要的节奏。 一直以来是想做一些…

HarmonyOS NEXT应用开发案例——全屏登录页面

全屏登录页面 介绍 本例介绍各种应用登录页面。 全屏登录页面&#xff1a;在主页面点击跳转到全屏登录页后&#xff0c;显示全屏模态页面&#xff0c;全屏模态页面从下方滑出并覆盖整个屏幕&#xff0c;模态页面内容自定义&#xff0c;此处分为默认一键登录方式和其他登录方…

leancloud云存储如何接入App Inventor 2?

提问&#xff1a;leancloud如何应用到App Inventor 2&#xff1f; LeanCloud 能够高效存取海量级 JSON 对象、二进制文件、地理位置等数据。其内置的行级 ACL 权限控制&#xff0c;以及通用的用户及角色管理体系&#xff0c;可以快速实现安全而灵活的数据访问。 根据官方文档&a…

Java零基础 - try-catch-finally和throw语句

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…