首页 > 其他分享 >FA 科技:一种基于换根 + DFS 序的点分治下下位替代

FA 科技:一种基于换根 + DFS 序的点分治下下位替代

时间:2024-11-16 19:56:28浏览次数:1  
标签:分块 复杂度 分治 DFS FA 例题 换根

起因:cjx 暑假集训的时候出了道题,老师说可以点分治。但是我最初的想法其实是换根处理,但怎么想发现都行不通,因为要同时维护 DFS 序和权值。于是就没想了。后来 10.5 和 xyh 进行长达 30s 的讨论 导游的工作 那题,说了我这个想法,xyh 觉得有道理,对要求解的问题具体化,于是我才想出了分块这一数据结构。并在 xyh 的指导下进行卡常。但其实这个方法已经被发明过了。Tree 那道题的题解里有提到过。

这个方法的复杂度是 \(O(n\times P)\),其中 \(P\) 为一个多项式,代表你使用的数据结构的复杂度。也就是说,如果你的 \(P\) 可以足够好,这个方法甚至可以是点分治的平替。

例题 1:BNDSOJ 1502 导游的工作

Method 1:暴力换根

我们钦定 \(1\) 到 \(n\) 中的每一个点为根。对于每一个根 \(u\) 算出整个树上每个点的深度,判断有多少个点的深度小于等于 \(c\) 即可。这是显然的,时间复杂度为 \(O(n^2)\)。

Method 2:分块优化换根

基本的思想还是 暴力统计。我们只是在用数据结构强行优化这个暴力。

考虑 树上换根动态规划 的思想。统计每个点的答案贡献。前提是你对换根法有了较为深刻的理解。但我们知道,如果把根从 \(u\) 换到儿子 \(v\),每个点的深度都会随之改变。而且这个改变关于原来点的编号不连续。但好消息是,我们在这里并不关注原先的点的编号是什么。

那我们怎样快速修改这个“不连续”的区间呢?如果你知道 树链剖分。那你一定知道它的下位替代—— DFS 序线段树 吧。其实就是根据 子树的 DFS 序连续 这一特性,把不连续的编号转化为连续的 DFS 序进行修改。在这一题里也同样是这么使用的。

但是这题我们并不能使用线段树。因为我们要的操作是这两种:

  1. 区间加减 \(w\)
  2. 全局询问小于等于 \(c\) 的 depth 的个数

其实第二个的全局我们可以加强成区间。你会发现这个东西基本等价于 P2801 教主的魔法。于是我们可以使用 分块 维护。

于是时间复杂度为 \(O(n \times P) = O(n\log n \sqrt{n} )\)

例题 2:P3806 【模板】点分治 1

这个因为时限卡的过死于是不能满分,虽然说暴力也可以那道 60 pts,但是我想说这个换根的方法是远优于暴力的。

这个题其实和上面那个题没有本质区别。还是换根,然后询问全局有没有等于 \(c\) 的数,依然可以块内二分解决。

最主要的不同就是把询问离线下来,每次换根的时候都处理一次 \(Q\) 个询问即可。

例题 3:P4178 Tree

这个就纯纯与导游的工作那题没有任何区别,所以我认为导游的工作那题也是紫。

就是把求最大变成全局统计小于等于 \(k\) 的点对了啊。

注意如果换根统计出来的答案是 \(ans\),则真正的答案应该为 \(\frac{ans-n}{2}\)。

例题 4:P2634 [国家集训队] 聪聪可可

稍微变一下形,这题的复杂度是 \(O(n\sqrt{n})\),因为没有块内排序和块内二分。

就是询问树上边权和为 \(3\) 的倍数的路径数。考虑每一块维护三个值。分别代表深度模 \(3\) 余 \(0,1,2\) 的个数。然后每次加 \(w\) 或减 \(w\),其实就相当于加 \(0/1/2\)。加 \(0\) 不用管,加 \(1/2\) 就相当于模 \(3\) 余 \(0,1,2\) 的个数互相交换。

注意散块的处理要尤为注意,就是因为散块,我们还要维护一个区间加再模 \(3\) 的 tag。修改的时候散块也是最麻烦的。

主要难点都是在分块。换根本身没啥难的。

标签:分块,复杂度,分治,DFS,FA,例题,换根
From: https://www.cnblogs.com/FracturedAngel/p/18549757

相关文章

  • springboot3整合mybatisplus问题Invalid value type for attribute 'factoryBeanObjec
    版本说明:JDK版本:17springboot版本:3.3.5问题分析:springboot版本与mybatisplus版本不兼容解决办法:将mybatisplus版本替换为以下版本<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>......
  • 云原生之运维监控实践-使用Prometheus与Grafana实现对Nginx和Nacos服务的监测
    背景如果你要为应用程序构建规范或用户故事,那么务必先把应用程序每个组件的监控指标考虑进来,千万不要等到项目结束或部署之前再做这件事情。——《Prometheus监控实战》去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章,当时使用的是docker-compose在单......
  • [网鼎杯 2018]Fakebook 1
    [网鼎杯2018]Fakebook1打开实例发现为博客列表,有登录跳转和类似注册或者添加博客的join跳转查看源码无果打开登陆页,尝试万能密码没有用,尝试从join入手,用admin去随便join一个显示博客不存在期间尝试多种sql注入方法均没有效果,转去其他方向尝试dirsearch目录爆破,发现了......
  • 下载HuggingFace模型的方法以及报错解决
    方法新建文件夹,右键,opengitbashhere设置全局代理#设置全局代理gitconfig--globalhttps.proxyhttp://127.0.0.1:7890gitconfig--globalhttps.proxyhttps://127.0.0.1:7890gitconfig--globalhttp.proxysocks5://127.0.0.1:7890gitconfig--globalhttps.p......
  • DAY65||Bellman_ford 队列优化算法(又名SPFA)|bellman_ford之判断负权回路|bellman_ford
    Bellman_ford队列优化算法(又名SPFA)94.城市间货物运输I思路大家可以发现Bellman_ford算法每次松弛都是对所有边进行松弛。但真正有效的松弛,是基于已经计算过的节点在做的松弛。给大家举一个例子:本图中,对所有边进行松弛,真正有效的松弛,只有松弛边(节点1->节点2)和......
  • 1018 Public Bike Management(多条最短路径,dijkstra+dfs+回溯)
     该题考查多条最短路径的计算,对比单条最短路,主要有两点不同:1.在dijkstra算法中记录每个结点的所有相同最短距离的前结点2.在dfs找多条最短路径时需要回溯状态拿到所有最短路径以后,我们根据题意去获取相应的结果即可1#include<bits/stdc++.h>2usingnamespacestd;......
  • <QNAP 453D QTS-5.x> 日志记录:在 NAS 从 huggingface_hub 下载模型 google-t5/t5-base,在
    目的:离线使用 google-t5/t5-base预训练模型, 行多种自然语言处理任务:翻译可借不支持东亚语言。Project-22.Ai-1.T5-base只能在:  English,French,Romanian,German间使用,code非常简单,大概沾到本地/离线使用模型的皮毛。运行这么小的模型,也使我的笔记拔高了,硬件要......
  • Facebook商城号防封:3个容易导致封号的坑
    Facebook商城作为一个重要的销售平台,不仅为商家提供了巨大的市场机会,也带来了一系列需要警惕的风险,其中包括账号被封的风险。本文将从环境异常、频繁操作和违规行为三个主要方面深入探讨,解析导致Facebook商城账号被封禁的具体原因,并探讨如何有效预防和应对这些风险。一、Faceb......
  • Chromium源码分析二:LifeofaPixel.pdf
    Chromium源码分析二:LifeofaPixel.pdf目录LifeofaPixel个人观点ccLayer树skia、vulkan、openGL、openCVSkiaVulkanOpenGLOpenCV区别联系PrePaintLifeofaPixel.pdf像素的一生,跟随像素的一生去理解Chromium的工作原理。据说是Chromium的入门培训PPT网址:​​​​​​​​​​​​​......
  • FlashOcc_ Fast and Memory-Efficient Occupancy Prediction via Channel-to-Height P
    FlashOcc:FastandMemory-EfficientOccupancyPredictionviaChannel-to-HeightPluginZoteroAbstractGiventhecapabilityofmitigatingthelong-taildeficienciesandintricate-shapedabsenceprevalentin3Dobjectdetection,occupancypredictionhasbec......