首页 > 其他分享 >树上问题记录

树上问题记录

时间:2023-08-08 11:55:56浏览次数:30  
标签:线段 log 记录 dep 复杂度 问题 lca 树上 节点

记录一下这一类问题。

T1

P4211 [LNOI2014] LCA
每次给出 \(l,r,x\) , 定义 \(dep_u\) 为 \(u\) 节点到根节点的距离+1,求 $ \sum_{i=l}^r dep(lca(i,z))$ 。
\(n\) 个节点 ,\(m\) 次询问 ,其中 \(n,m \leq 5e4\) 。

题目很简洁,我们如果暴力求每一个 lca ,复杂度将是 \(O(n^2\log n)\) 的,需要转换式子。考虑到每一个询问有一个点 z 是固定的,不妨从这里入手 。

因为有一个定点,所以所有枚举到的 lca 一定是在 z 到根节点的这条链上(包括 \(z\) 节点),而且 lca 同样在另一个节点到根节点这条链上,取第一个交点就好了。所以求 \(dep(lca)\) 就变成了求这两条路径的交集就好了。

考虑离线询问为 \(\sum_{i=1}^r {dep}(lca(i,z))- \sum_{i=1}^{l-1} dep(lca(i,z))\),写个树剖套一个线段树就好了,总的复杂度为
\(O(n\log^2n)\) 。写代码的时候记得注意取模以及相减的时候避免出现负数。

T2

P5305 [GXOI/GZOI2019]旧词
T1的升级版,求 $ \sum_{i=l}^r dep(lca(i,z))^k \bmod 998244353 $ ,数据范围 \(10^5\) 。

和之前一样的思路,但是要维护的值是要求 k 次方的,所以我们考虑差分,让根节点到每一个点路径上的值之和等于这个值,因此每一个线段树上的点需要带一个 \(dep_u^k-(dep_u-1)^k\) 的权值,再相乘就好了,和之前的做法一致了,由于我们还要快速求 \(10^9\) 次方,还得写一个快速幂。

T3

Lomsat gelral
对于每一个 \(i\in[1,n]\),求出以 \(i\) 为根的子树中,占数量最多的颜色的编号和。\(n\leq10^5\) 。

考虑线段树合并,递归完成每一个子节点后与根节点合并,维护的将是颜色的权值线段树,复杂度为 \(O(n\log n)\) ,时空都一样。注意 pushup 的时候如果碰到数量一样多的颜色要并起来,且计数器要开 long long 。

考虑 dsu on tree ,先递归解决轻儿子,然后在计数器中删掉贡献,最后解决重儿子,然后再直接把其他轻儿子合并上去,总的复杂度也是 \(O(n\log n)\) 。

T4

P4556 [Vani有约会]雨天的尾巴
每次给出 \(u,v\) ,在他们最短简单路径上加权值为 \(w\) 的标记,问最后每一个节点的最多权值的数值。

考虑线段树合并,对于每一个操作打上树上差分标记,最后统一 dfs 一次,暴力 merge 所有的信息,时间复杂度 \(O(n\log n)\)。

考虑树链剖分,在线做法,每个操作都使用树剖一条链一条链去跳,再用线段树维护,时间复杂度 \(O(n\log^2 n)\)。

考虑 dsu on tree,和线段树合并一样先打上差分标记,再遍历轻儿子删贡献,暴力 merge 到重儿子上,时间复杂度 \(O(n\log n)\)。

T5

P4197 Peaks
给定无向带边权带点权图,\(q\) 组询问,每组询问询问从点 \(v\) 开始只经过边权不大于 \(x\) 的路径所能到达的点中第 \(k\) 大点权,如果无解输出 −1。

因为要求走不超过 x 边权的路径,所以肯定是走最小生成树最优,因此建立 \(\text{Kruskal}\) 重构树维护连通性,再写一个树剖 lca 求能到达的边,最后又因为求第 k 大还要套个 dfs 序的主席树去求解静态第 k 大,总的时间复杂度为 \(O(n\log n)\) 。这个题目缝合了很多算法,属于是码农题了

标签:线段,log,记录,dep,复杂度,问题,lca,树上,节点
From: https://www.cnblogs.com/fzefze/p/17613791.html

相关文章

  • kettle案例六数据表关联--排序记录-记录集连接-过滤记录
    如果我们清洗的数据是多个维度的,那么很有可能对数据进行关联得到一张最终表进行分析。比如回答集合的数据里有如下字段idoptionIduser包含了谁回答了哪个问题,选项是什么。选项集合的数据里有如下字段idquestionoption我们最终希望得到的数据集合是idquestionop......
  • 遇到问题--hadoop---cdh识别不到服务器状态
    情况公司停电之后回来看到集群情况如下,主要问题是cdh识别不到其中一台服务器状态。这种情况下重启整个集群会超时失败。原因识别不到的可能原因有三个:一是服务器没有启动二是cm客户端程序没有启动三是防火墙问题解决方法依次排查以上三个原因解决问题。ssh远程连接服务器可......
  • 遇到问题---hadoop--Remote App Log Directory does not have same value for the 4 N
    情况因为我们的某台服务器空间不足,暂时清理不出来,所以需要修改一些存放数据的日志目录等。修改完毕之后发现报错错误的配置RemoteAppLogDirectorydoesnothavesamevalueforthe4NodeManagers。原因一般来说不同的主机不要求配置的目录一致,但是yarn.nodemanager.remote......
  • 遇到问题--hadoop---节点服务重启成功一段时间后又停止
    情况我们发现CDH中一个hbase的regionServer节点经常自动停止,没有明显的错误信息。重启后又过一小段时间又自动停止原因这种情况一般都是需要排查相关服务的日志的,比如我们是regionServer节点的服务,则需要先看regionServer节点的日志。很幸运的是原因很快就找到了。一进入日志界面......
  • 遇到问题---hadoop----local-dirs are bad
    遇到的问题我们的hadoop集群在运作过程中部分节点报错local-dirsarebad原因hadoop集群硬盘目录默认的使用阈值是90%空间不足,目录使用率超过阈值了90%了解决方式调整yarn的参数yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage把比例调高到9......
  • 记一个问题:为什么 Redis get 方法时间复杂度官网标称 O(1)
    事情源自于上一篇文章:Redis数据结构-字典dict在学习到dict结构会用来维护redis数据库时,联想到redis的get方法底层一定会访问dict来查找键值。本质上还是查找hash,那么既然会查找hash,redis又是采取拉链法来解决hash冲突,那当访问的哈希桶是一个链表时,不就会出......
  • ERROR:'ipconfig'不是内部或外部命令,也不是可运行的程序 && 解决配置环境变量时只显示
     解决方法: 输入cdc:\windows\system32进入该路径后输入ipconfig,即可得出ip地址。 拓:发现两个进入高级系统设置的方法。1.桌面.此电脑→右键.属性→高级系统设置2.桌面.控制面板→搜索.高级系统设置 拓:编辑环境变量的时候,解决配置环境变量时只显示一行的问题变量值......
  • 【AGC】付费下载上架下载后无法安装问题
    【关键字】AGC、付费下载、应用安装 【问题描述】有开发者反馈用户下载后无法安装,采用未接入sdk,直接勾选付费-产品上架的方案,以前其他产品是能够正常安装的,现在不知道为啥。报错信息:付费后显示“订单创建失败,请重试”。​​ 【解决方案】根据报错信息定位到问题原因:根......
  • No input file specified. thinkphp 高版本正则重写问题
    Noinputfilespecified.问题描述:使用TP框架做项目时,在启用REWRITE的伪静态功能的时候,首页可以访问,但是访问其它页面的时候,就提示:“Noinputfilespecified.”原因在于使用的PHP5.6是fast_cgi模式,而在某些情况下,不能正确识别path_info所造成的错误默认的.htaccess里面的规则:......
  • 遇到的问题-----win7配置wifi时设置网络后无线连接不出现
    关于设置wifi的步骤详见:win7系统笔记本作为wifi热点提供无线连接win7配置wifi时设置网络后无线连接不出现有两种情况:一:以前是正常的突然就没有了这种情况把机子重启一次就可以了 出现无线连接后就可以按照步骤设置二:第一次设置就没有,这种情况要在官网下最新的无线网卡驱动.......