首页 > 其他分享 >ZROI 2023.12.24 T2

ZROI 2023.12.24 T2

时间:2023-12-24 21:23:50浏览次数:37  
标签:24 连通 2023.12 T2 DFS fa 区间 Theta 考虑

很硬的题目!

题意

给出一棵 \(n\) 个点的树以及它以 \(1\) 为根时的一种 DFS 序,\(q\) 组询问(强制在线):给定 \(k\) 个区间 \([l_1,r_1],[l_2,r_2]\dots[l_k,r_k]\),问 DFS 序在这些区间内的点构成几个连通块。

80 分解法

对 \(k\) 根号分治,\(k>\sqrt{n}\) 直接暴力,\(k\le\sqrt{n}\) 的考虑一种 \(\Theta(k^2)\) 做法。连通块数等于点数减边数,所以我们对于每个区间内的点考虑它的父亲是不是在给定的这些区间内,则可以差分成 \(\Theta(k^2)\) 个形如 区间 \([l,r]\) 内有多少对父子关系 的询问,这个考虑扫描线扫儿子,使用 \(\Theta(\sqrt{n})-\Theta(1)\) 的分块维护父亲 DFS 序。强制在线则考虑可持久化分块。由于时间 2s,空间 1024MB,可以通过 \(n\le 2\times 10^5\) 的部分。

正解

和 80 分解法毫无关系。以下假设点已经按照 DFS 序标号。

对某个区间 \([l_j,r_j]\),从 \(l_j\) 开始,设 \(nxt_u\) 表示 DFS 序上 \(u\) 后面第一个 \(u\) 子树外的点,那么每次跳 \(nxt\),直到当前点的 DFS 序大于 \(r_j\),跳的次数就是连通块数。所以单个区间可以用倍增维护这个来算。

接下来考虑区间之间的影响。DFS 序区间在原树上形成的结构形如从 \(fa_{l_j}\) 到 \(LCA(fa_{l_j},r_j)\) 的一条链上的所有点,它们所有 DFS 序大于等于 \(l_j\) 的子树都被标记(\(LCA(fa_{l_j},r_j)\) 的部分子树除外)。我们需要考虑在 \(j\) 之前的其它区间是否覆盖了这条链上的某个点,如果覆盖了,那么就要减少 被标记的儿子个数 这么多个连通块。考虑如何统计这个。

注意力非常集中的人可以发现,由于所有区间不交,随着 \(l_j\) 不断变大,某一些区间会变得没有用。具体地,每个 DFS 序区间都会覆盖上述链上的一段区间中的点,假如它与上述链交非空,且不包含链端点即 \(LCA(fa_{l_j},r_j)\),那么在以后的询问中,它一定没有用了。于是基于这一点,我们用一个栈维护所有区间,每次暴力弹栈,用倍增等手段维护链上区间内 被标记的儿子个数 的和。总复杂度是 \(\Theta(n\log n)\),实在是非常牛的。当然花花说可以用更复杂的精细实现做到整个题完全的线性,正常人类不会关心这一点。

标签:24,连通,2023.12,T2,DFS,fa,区间,Theta,考虑
From: https://www.cnblogs.com/kyeecccccc/p/17924868.html

相关文章

  • 闲话12.24
    在学校的第一天。上午下午卷了昨天讲的《数论》,感觉收获很多啊,抽象的计数题也见了一大堆......
  • 2023-2024-1 20231306 《计算机基础与程序设计》第十三周学习总结
    作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第一周作业这个作业的目标无作业正文https://www.cnblogs.com/zwywuhu/p/17924830.html教材学习内容总结《c语言程序设计》第12章——结......
  • 12.24
     各位同学可根据自身情况进行选择:    选项一:根据实验一、二、三完成如下任务:        任务一:基于Jfinal构建信息管理系统,要求包含用户管理,翻译业务模块管理,图片优化模块管理(占30%)。        任务二:要求不同用户登录后可进行文字翻译和图片优化业务处理,并且......
  • 2023.12.24——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.软件案例分析明日计划:学习......
  • 2023-2024-1 20231312 《计算机基础与程序设计》第13周学习总结
    作业信息这个作业属于哪个课程<班级的链接>2023-2024-1-计算机基础与程序设计|-这个作业要求在哪里<作业要求链接>2023-2024-1计算机基础与程序设计第6周作业|这个作业的目标《C语言程序设计》第12章|作业正文作业链接教材学习内容总结《C》结构体的......
  • 行业名词 - 20231224
     名词简写名词概述名词解释所属行业RPCremoteproceducecall远程通信回调技术-协议gRPCgoogleremoteproceducecallgoogle远程通信回调技术-协议ACLaccesscontrollist访问控制列表              ......
  • 2023-2024-1 20231323《计算机基础与程序设计》第十三周学习总结
    2023-2024-120231323《计算机基础与程序设计》第十三周学习总结作业信息所属课程2023-2024-1-计算机基础与程序设计作业要求2023-2024-1计算机基础与程序设计第十三周作业作业目标自学教材《C语言程序设计》第12章并完成云班课测试作业正文本博客链接教......
  • 学期2023-2024-1 20231409 《计算机基础与程序设计》第十三周学习总结
    学期2023-2024-120231409《计算机基础与程序设计》第十三周学习总结这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十三周作业这个作业的目标自学《C语言程序设计》第十二章并完成云班课测试作业正......
  • 2023-2024-1 20231301 《计算机基础与程序设计》第十三周学习总结
    2023-2024-120231301《计算机基础与程序设计》第十三周学习总结作业信息作业链接作业课程<班级>(2023-2024-1-计算机基础与程序设计)作业要求<作业>(2023-2024-1计算机基础与程序设计第十三周学习总结)作业目标<《C语言程序设计》预习第十二章>《C语言程序设......
  • 2023-2024-1 20231325 《计算机基础与程序设计》第13周学习总结
    ###目录*作业信息*教材学习内容总结1.《c语言程序设计》第12章*基于AI的学习*上周错题*学习进度条作业信息这个作业属于哪个课程2023-2024-1《计算机基础与程序设计》这个作业的要求在哪里1.学习《C语言程序设计》第12章并完成云班课测试。作业正文......