首页 > 其他分享 >树分治学习笔记

树分治学习笔记

时间:2024-01-26 19:11:59浏览次数:25  
标签:队列 分治 笔记 学习 为根 答案 例题 节点

点分治

0.用处

点分治一般用于树上路径的问题。

比如求条数等。

1.点分治过程
  1. 选择一个根节点

  2. 计算贡献,贡献一般有一下两种

1.两个点的路径经过根节点
2.两个点在同一个子树内

  1. 然后把根节点删掉,分成若干棵树,对每一棵树做同样的操作

然后每一次我们只需要计算两个点的路径经过根节点的贡献即可。

2.例题
例题1

首先我们先想暴力,的写法。我们枚举点 \(u\),为点 \(u\) 是首都的答案。

然后我们把所有和 \(u\) 相连的所有城市加入队列里,然后我们遍历队列里的点。

假如队列里的点的父亲是其他城市的,那么就把这个城市的所有点加进来。

假如队列里的父亲已经入队过,忽略最后我们统计有多少种点入过队,那么就是答案。

时间复杂度为 \(n^2\)。

然后我们考虑优化。

如果以 \(u\) 为根节点的答案不会劣于其他为根节点选 \(u\) 的答案。

那么我可以直接把以 \(u\) 为根的方案替换成以其它点为根时选了 \(u\) 的方案。

也就是说,以一个点 \(u\) 为根求完答案的时候,求 \(u\) 的子树内的点的答案时,就不会再把 \(u\) 加进它们的方案,也就是不会再经过 \(u\),去选其他子树点。

于是点分治即可。时间复杂度为 \(n \log n\)。

代码后面放。

标签:队列,分治,笔记,学习,为根,答案,例题,节点
From: https://www.cnblogs.com/Carousel/p/17990505

相关文章

  • 学习记录14
    本次学习学习了Dataframe方面的知识DataFrameDataFrame概念SparkSQL增加了DataFrame(即带有Schema信息的RDD),使用户可以在SparkSQL中执行SQL语句,数据既可以来自RDD,也可以是Hive、HDFS、Cassandra等外部数据源,还可以是JSON格式的数据SparkSQL目前支持Scala、Java、Python......
  • 学习记录15
    本次学习学习了将dataframe里吗有结构的数据加载到mysql以及进行读这里采用独立应用程序的方式读取MySQL数据库内容。创建一个代码文件SparkReadMySQL.scala,其内容如下:importorg.apache.log4j.{Level,Logger}importorg.apache.spark.sql.SparkSessionobjectSparkRea......
  • openGauss学习笔记-208 openGauss 数据库运维-常见故障定位案例-TPCC高并发长稳运行因
    openGauss学习笔记-208openGauss数据库运维-常见故障定位案例-TPCC高并发长稳运行因脏页刷盘效率导致性能下降208.1TPCC高并发长稳运行因脏页刷盘效率导致性能下降208.1.1问题现象TPCC高并发长稳运行因脏页刷盘效率导致性能下降,具体表现为:初始性能较高,随着运行时间增加,数据......
  • 近似计算Survey阅读笔记
    近似计算Survey阅读笔记论文:AReview,Classification,andComparativeEvaluationofApproximateArithmeticCircuits|ACMJournalonEmergingTechnologiesinComputingSystems指标错误率:errorrate(ER)错误距离:errordistance(ED)归一化平均错误举例:normalizedmeane......
  • Excel表格转GDScript插件的使用 学习笔记
    【【蘩】[Godot教程]Excel表格转GDScript插件的使用】ConfigHelper导出生成在excels文件夹下。添加新的字符串。导出表格,会被忽略掉的(如注释内容)"ignore":true......
  • Springcloud学习笔记61---Spring MVC的拦截器HandlerInterceptor
    1. HandlerMethod介绍HandlerMethod它作为SpringMVC的非公开API,可能绝大多数小伙伴都对它比较陌生,但我相信你对它又不是那么的生疏,因为你可能没用过但肯定见过。比如SpringMVC的拦截器HandlerInterceptor的拦截方法的第三个入参Objecthandler,虽然它是Object类型,但其实绝大部......
  • 【学习笔记】链式前向星
    链式前向星,是一种邻接表存图的方式。本质上是用数组模拟一个链表。适合存各种类型的图,但是查询两节点间的边是否存在很不方便,对出边进行排序也很麻烦。#include<iostream>#include<algorithm>#include<cstring>#include<queue>usingnamespacestd;constintN=1e5+5;type......
  • 数学建模入门笔记(2) 聚类分析
    聚类分析​ 聚类分析(ClusterAnalysis):又称群分析,对多个样本/指标定量分类的多元分析方法,是无监督学习1聚类分析的分类​Q型聚类(QualitativeClustering):也称硬聚类,一般用于将样本聚类,每一簇之间无交集,用距离作为相似性度量,包括K-Means聚类、层次聚类、DBSCAN聚类等​ R......
  • 读论文-基于自监督学习的序列推荐算法
    前言今天读的文章为一篇名叫《基于自监督学习的序列推荐算法》的期刊论文,文章于2023年8月15日发表在自然科学报上,这篇论文的引用为:[1]闫猛猛,汪海涛,贺建峰等.基于自监督学习的序列推荐算法[J].重庆邮电大学学报(自然科学版),2023,35(04):722-731.摘要原文如下:针对现有序列......
  • D-Bus学习
    D-Bus学习https://blog.csdn.net/f110300641/article/details/106823611概念D-Bus是在Linus上桌面系统中各应用程序之间通信(IPC)和远程过程调用(RPC)的机制,实现了多个程序在计算机上同时通信。D-Bus将原本一对一的通信过程出抽象出一个软件总线,应用程序链接到这个总线,不关......