1797F Li Hua and Path(Min-rt树,Max-rt树)

news2024/11/28 16:45:12

题目链接

题意 : 给你一个大小为 n n n的树,我们想求解一个问题,问题的定义是找有多少条路径满足恰好满足路径的端点是路径的最小值 o r or or最大值条件之一,【注】不能同时满足路径的两个端点是最小值又是最大值
现在增加 m m m个操作,每个操作接在 k j k_j kj节点上,每次操作都要回答增加节点后的问题答案。

思路 :
[vp时思路] 我们可以很容易地发现这个问题可以离线,然后我们考虑离线,我们考虑怎么维护端点是路径的最大值 o r or or最小值呢,我们考虑第一个 t r i c k trick trick-按照点的顺序重新合并点集。
第一步:我们先按 1 − n 1-n 1n的顺序遍历点集,每次合并只合并原树连在 i i i节点,且比 i i i节点小的点。

举个例子
4
1 2
2 3
1 3
我们连点的顺序是
1 - //1作为最大值的路径数为 0
2 - 1 //2作为最大值的路径数为 1
3 - 1 、2 //3作为最大值的路径数为 2

这样合并之后我们可以发现我们可以统计出以 i i i为最大值的路径数 A A A —— i i i所在的连通块大小 -1。
第二步,我们按照 n − 1 n-1 n1的顺序遍历点,每次合并只合并原树连在 i i i节点,且比 i i i节点大的点。
我们可以得到以 i i i为最大值的路径数B —— i i i所在的连通块大小-1 。

这个时候我们可以得出以 i i i为最大值or最小值的路径数,但是题目要求不能同时存在路径端点同时为路径的最小值 o r or or最大值,所以我们需要容斥一下,我们设C为端点同时为路径的最小值 o r or or最大值的数量,答案应该为 A + B − 2 C A + B - 2C A+B2C

求解C的过程我只想到了用 b i t s e t bitset bitset暴力求交集,是 n 2 / 32 n^2/32 n2/32的复杂度,能不能过(应该会爆空间)待论。

[看题解】题意创造性的提出了两个概念即 [Min-rt树,Max-rt树] ,名字很抽象,但是我根据题解图文很快理解了这个树。
在这里插入图片描述

在这里插入图片描述
以上是原图和Max-RT树的对比,我们可以惊奇的发现,这个树就建立在我的合并过程上!我合并的时候,只需要把根节点(连通块的父节点)设置为权值最大值,我们就可以惊奇的发现可以得到这个神奇的树形结构。Min-RT类似。

我们仔细观察一下这个数有什么性质,我们可以直观的发现在Max-RT数上,如果 u u u v v v子树上的节点,我们 u , v u,v u,v路径的最大值一定是 v v v,换句话说在 u , v u,v u,v路径中,端点 v v v是路径 u , v u,v u,v的最大值。我们可以通过祖先关系/子树关系可以得到这些性质。

我们开始构造Max-RT树,Min-RT树。
我们把 a n s u ans_u ansu定义为在只由 ( 1 − u ) (1-u) (1u)构成的树中, u u u作为最大值 o r or or最小值的形成的路径条数。
我们发现在Max-RT树中 a n s u ans_u ansu u u u子树的大小,在Min-RT树中, a n s u ans_u ansu u u u子树的高。
我们把 A A A+ B B B算出来并已经存到 a n s u ans_u ansu中。

现在我们需要计算 C C C
C C C我们可以发现是统计 u , v u,v u,v在Max-rt树 u u u v v v的子树节点,但Min-rt树 v v v u u u的子树节点的数量。
不难发现,这是一个经典问题,求解两个树交的思想可以解决掉此问题。可以参考学长博客的一些思路。

步骤:
1.我们先统计Max-rt的dfs序,统计子树大小。
2.遍历Min-rt,我们把路径节点用存起来(存的是该节点在Max-rt树的dfs序)(用树状数组维护单点加区间和),然后遍历到 u u u节点时,我们计算祖先节点在Max-rt树上有哪些是 u u u的子树,我们可以用树状数组的区间和求出,因为树状数组维护的就是祖先节点的dfs序。

代码

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

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

相关文章

【Unity】基于AVFoundation开发MacOS摄像头(二)

【Unity】基于AVFoundation开发MacOS摄像头(一)_GrimRaider的博客-CSDN博客实现一个Camera设备驱动,代替unity自带WebCamTexturehttps://blog.csdn.net/GrimRaider/article/details/130127229 目标1:实现bridge,创建一…

【Java数据结构——环形链表】判断链表成环与寻找链表成环的入口节点(经典)

判断链表是否成环https://leetcode.cn/problems/linked-list-cycle/description/ 解题核心思路: 定义快慢指针初始引用指向链表的头节点,快指针每向后走两步,慢指针走一步。如果链表中存在环,则快慢指针一定会在某次移动后相遇。 …

一文看懂“低代码、零代码”是什么?有什么区别?

低代码和零代码近几年热度一直居高不下,乍一看,很容易混淆低代码和零代码开发平台—— 因为它们都是传统开发的替代方案,旨在通过类似于可视化编程的功能加速软件开发过程。 但二者根本不是一回事。从开发人员经验 、目标角色到使用场景&…

C++ 学习4

C设计原则 高内聚低耦合 内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高。 所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。 耦合&am…

计算机网络 - TCP的效率与特性

前言 本篇是介绍部分TCP的特性,了解TCP提高传输速率的机制;如有错误,请在评论区指正,让我们一起交流,共同进步! 文章目录前言1. 滑动窗口2. 流量控制3.拥塞控制4.延时应答5. 捎带应答6. 面向字节流7. 异常…

spring bean

图灵课堂学习笔记 1. BeanFactory与ApplicationContext的关系 p56 ApplicationContext在BeanFactory基础上对功能进行了扩展,例如:监听功能、国际化功能等。BeanFactory的API更偏向底层,ApplicationContext的API大多数是对这些底层API的封…

python带你制作可以随机的自答题程序

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 目录前言环境使用:模块使用:程序实现思路: <模板> 获取题库一. 获取题库 --> 问题答案二. 进行自动答题操作代码展示题库采集自动答题尾语 &#x1f49d;环境使用: 解释器版本 >>> python 3.8 代码编辑器…

数学基础|线性代数回顾

因为学机器学习的时候发现自己线性代数忘光光了&#xff08;悲&#x1f613;&#xff0c;本篇捞一捞当年学线性代数看哔哩哔哩宋浩老师补充记的潦草笔记。 目录 &#x1f4da;线性代数知识点 &#x1f407;向量 &#x1f955;向量的线性组合 &#x1f955;线性相关无关的性…

JVM 工作原理和即时编译(JIT)

目录 1、什么是虚拟机&#xff1f; 2、JVM 虚拟机简介 3、JVM 的工作原理 4、什么是即时编译&#xff08;JIT&#xff09;&#xff1f; 5、解释型语言和编译型语言的区别 6、为什么说 Java 是一种半编译半解释的语言&#xff1f; 1、什么是虚拟机&#xff1f; 虚拟机是一…

直播美颜技术的演进及其应用:直播美颜SDK详解

直播美颜技术的应用&#xff0c;为直播开辟了新的业态&#xff0c;从最初简单的美颜滤镜&#xff0c;到现在的直播美颜SDK&#xff0c;其技术演进历程也是一步步走来。 一、直播美颜技术的演进 1、简单美颜滤镜 最初的直播美颜技术&#xff0c;就是通过简单的美颜滤镜来实现…

python内存回收gc模块

目录1. python 垃圾回收机制标记-清除的回收机制分代回收2. gc 模块参考资料对已经销毁的对象&#xff0c;Python不会自动释放其占据的内存空间。为了能够充分地利用分配的内存&#xff0c;避免程序跑到一半停止&#xff0c;要时不时地进行内存回收&#xff0c;这时候gc&#x…

超详细——Python中 pip 常用命令

人生苦短&#xff0c;我学Python 相信对于大多数熟悉Python的人来说&#xff0c;一定都听说并且使用过pip这个工具&#xff0c;但是对它的了解可能还不一定是非常的透彻&#xff0c;今天小编就来为大家介绍10个使用pip的小技巧&#xff0c;相信对大家以后管理和使用Python当中…

每天一道大厂SQL题【Day19】华泰证券真题实战(一)

每天一道大厂SQL题【Day19】华泰证券真题实战(一) 大家好&#xff0c;我是Maynor。相信大家和我一样&#xff0c;都有一个大厂梦&#xff0c;作为一名资深大数据选手&#xff0c;深知SQL重要性&#xff0c;接下来我准备用100天时间&#xff0c;基于大数据岗面试中的经典SQL题&…

CSS中相对定位与绝对定位的区别及作用

CSS中相对定位与绝对定位的区别及作用场景复现核心干货相对定位绝对定位子绝父相&#x1f525;&#x1f525;定位总结绝对定位与相对定位的区别场景复现 在学习前端开发的过程中&#xff0c;熟练掌握页面布局和定位是非常重要的&#xff0c;因此近期计划出一个专栏&#xff0c…

【问题、AI解答】mongodb中使用$lookup进行连表查询使用_id作为localField出现查询结果字段为空的情况

描述&#xff1a; db.acticles.aggregate([ {$lookup&#xff1a;{from:"acticlesMaptags",localField:"_id",foreignField:"acticleid",as:"tagid"} } ])acticlesMaptags集合中的acticleid字段存在与acticles集合中的_id相匹配的数据…

1.15 从0开始学习Unity游戏开发--游戏UI

上一章中&#xff0c;我们剩下最后一个任务&#xff0c;需要支持鼠标控制准心来进行设计&#xff0c;那么准心本质上就是一个始终呈现在屏幕上的一个图片&#xff0c;你当然可以用一个3D物体来制作&#xff0c;之前讲解渲染概念的时候也提到过&#xff0c;我们的屏幕就是相机的…

传智健康_day3

本章对检查组管理进行开发 一.新增检查组 1.修改新增弹层可见属性&#xff0c;添加重置表单功能 2.动态刷新检查组包含的检查项信息 <tr v-for"c in tableData"> 使用for循环来遍历查询出tableData中的数据 tableData是一个数组对象&#xff0c;定义在VUE…

hadoop分布式安装

文章目录1. 将安装包hadoop-3.1.3.tar.gz上次至linux中2. 进行解压操作3. 修改目录名称4. 配置环境变量5. 远程传输5.1 scp远程传输6. 免密登录7. 集群规划8. 修改自定义配置文件8.1 hadoop-env.sh8.2 core-site.xml8.3 hdfs-site.xml8.4 mapred-site.xml8.5 yarn-site.xml8.6 …

ReactNative入门

React基本用法&#xff1a; react与js不同的点在于 react使用的是虚拟DOM js是真实DOM 作用&#xff1a;当有新的数据填充 可以复用之前的&#xff0c;而js需要整体重新渲染 创建虚拟DOM还可以使用jsx语法直接声明&#xff1a; 注意要用babel标签将jsx转化为js 但是建议采用j…

UNIX环境高级编程——进程环境

7.1 引言 本章主要讲解了进程的环境。 7.2 main函数 C程序总是从main函数开始执行&#xff0c;其函数原型为&#xff1a; int main(int argc, char *argv[]);argc是命令行参数的数目&#xff0c;argv是指向参数的各个指针所构成的数组&#xff1b;当内核执行C程序时&#x…