省选算法复习

news/2025/3/20 18:08:06/文章来源:https://www.cnblogs.com/haozexu/p/18783622

省选算法复习

1. 线段树优化建图

当我们需要向区间内所有点连边或者从区间中所有点连到某个点的时候,便可以使用线段树来优化,如果需要从区间每一个点连到另一个区间每一个点的话,加一个虚点就好了。

这不是一个很困难的技巧,关键在于要建模。

P5471 [NOI2019] 弹跳 - 洛谷

本题,要求从一个点连接到一个矩形里面的所有点。然后求最短路径。

14-18 号测试点就是模板线段树优化建图。9-13 号测试点是直接建图。1-8 是暴力。

那么 KDT 其实也可以优化建图,但是空间太小了,运气好也许能过 19-22.

只是简单地进行一维技巧的二维扩展好像是比较无效的,因为这种情况下你很难指定第二位应该连哪些边。

现在的问题是要建立的边有 \(\mathcal O(m\sqrt n)\) 条,存不下。

2. KDT

KDT 是维护高维点集的有力结构。其结构保证:点数 \(\mathcal O(n)\) 树高 \(\mathcal O(\log n)\) 矩形查询 \(\mathcal O(\sqrt n),\text{general form }\mathcal O(n^{1-1/k})\)


我们可以继续看这个题,qwq

考虑无论边有多少条,能到达的点最多 n 个,而建图的目的就是快速遍历所有能够到达的点。所以不把边建出来即可。

另外,本题也可以不使用 KDT 优化建图,见杂题日推 I,这种方法更巧妙。


查询复杂度分析

容易知道,一次查询的复杂度就是部分被查询区间包含的节点个数,我们先考虑完全包含查询区间的节点,这至多有 \(\mathcal O(\mathbf{height})=\mathcal O(\log n)\) 个,而不完全包含的,如上图。

对于当前节点,若子树大小为 \(n\),那么考虑画出它儿子、孙子的划分,上图中每一份的子树大小都是 \(n/4\),我们可以对查询矩形的每一条边来考虑,发现矩形的一条边至多穿过两个孙子,然后对于每一个被穿过的孙子,递归考虑,可以写出:

\[T(n)=2T(n/4)+\mathcal O(1) \]

由主定理,\(T(n)=\mathcal O(\sqrt n)\)

插入删除

我们有两种策略

  1. 插入/删除的个数超过一定阈值就全局重构,单次修改均摊 \(\mathcal O(n\log n/B)\),查询均摊 \(\mathcal O(B+n^{1-1/k})\)

  2. 适用于仅有插入的情况,这同样对其他大量不支持插入的数据结构管用,即二进制分组,插入时,新建大小为 1 的某数据结构,然后不断将大小相同的拿来拍平重构。这样,如果最后数据结构有 \(n\) 个点,那么总插入复杂度就是 \(\mathcal O(n\log^2 n)\)

注意用替罪羊维护是假的。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fastadmin订单父子表管理端

fastadmin后台父子表使用方法 发布于 2021-01-22 12:48:10fastadmin后台的所有表格都是支持父子表配置的,只需要简单修改一下对应的JS即可,下面直接进入主题。示例是我的全国省市行政区划表,是从国家统计局网站采集下来的,共五级行政数据,非常适合用来做父子表,按照级别一…

Rudolf and k Bridges

Rudolf and k Bridges 题目 大致题意上图为俯视图 有一个\(nXm\)的网格,下标从\(1-n\) 以及从 \(1-m\),\((i, j)\) 的值就是这个这垂直一格水的深度 现在要安装支架,有几个信息:\((i, 1)\) 和 \((i, m)\) 处必须要安装相邻支架的距离不能超过 \(d\), 相邻距离为 \(abs(j - …

背离Divergence Trading ,贪小便宜

趋势交易(trend trading)和背离交易(divergence trading),代表了两种不同的交易策略。做背离交易相当于赌市场短期失效,承认你比市场聪明,虽然能赚小钱,但往往是亏大钱的根源。 贪小便宜爱背离,贪小便宜(gain small advantages)不爱止损(cut losses),所以背离和不止损…

在鸿蒙NEXT开发中实现一个语音识别组件

鸿蒙系统发布以后都不知道叫它5.0版本还是NEXT版本了,哈哈,反正是最新版本就对了。对于语音转换文字,鸿蒙系统提供了离线语音识别模型speechRecognizer,语种目前支持中文,识别效果非常不错。今天要分享的是使用speechRecognizer实现一个语音识别组件。要实现语音识别,首先…

激光代加工产品一览-代加工-外协加工-委外加工-激光代加工-河南郑州亚克力切割雕刻代加工-芯晨微纳(河南)

关键词:河南省郑州市、激光代加工、激光打标、激光切割、激光雕刻、激光打孔、激光毛化、激光分切 简介:芯晨微纳(河南)光电科技有限公司,专注于激光微纳代加工、设备/耗材代理销售、设备租赁、技术推广服务,可处理材料类型及应用范围十分广泛,欢迎来电咨询(韩经理1823…

20242801 2024-2025-2 《网络攻防实践》第4次作业

20242801 2024-2025-2 《网络攻防实践》第4次作业 一、实验内容 ​ 在虚拟机环境中完成TCP/IP协议栈重点协议的攻击实验,学习ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击的原理和相关知识,并动手进行实践。 二、实验过程 (一)ARP缓存欺…

缓存监控治理在游戏业务的实践和探索

通过对 Redis 和 Caffeine 的缓存监控快速发现和定位问题降低故障的影响面。作者:来自 vivo 互联网服务器团队- Wang Zhi 通过对 Redis 和 Caffeine 的缓存监控快速发现和定位问题降低故障的影响面。 一、缓存监控的背景游戏业务中存在大量的高频请求尤其是对热门游戏而言,而…

从零开始驯服Linux(一):ZYNQ-Linux启动文件构建全解析

从零开始驯服Linux(一):ZYNQ-Linux启动文件构建全解析 ZYNQ系列芯片集成了ARM处理器和FPGA(可编程逻辑单元),正是因为由于ARM处理器的存在,所以我们可以在ZYNQ系列芯片上面运行Linux系统。 在ZYNQ系列芯片上运行Linux会给我们带来很多优势:首先,我们可以将部分逻辑处理…

# 20241902 2024-2025-2 《网络攻防实践》第六周作业

1.实验内容 通过本周的学习和实践,学习使用metasploitable对windows进行远程的渗透测试实验;学习利用wireshark进行日志文件的分析和攻击取证,解读攻击者所利用的攻击、攻击者的具体操作以及如何对攻击行为进行防范;实践同一内网中对利用metasploitable对其他windows系统进…

gitlab+jenkins+harbor+k8s安装操作流程之rancher

关闭防火墙 systemctl stop firewalld yum安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 下载docker-ce.repo源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo 安装docker yum install…

win11优化pyenv-venv虚拟环境切换

问题 使用 pyenv-venv activate env_name 命令激活虚拟环境后无法使用tab自动完善命令无法上下键切换历史命令脚本 #!/usr/bin/bashvenvs="/d/JavaProgramFiles/pyenv-win/pyenv-win-venv/envs" # #!/bin/bashactivate () {# 设置 PATHORIGIN_PATH="${ORIGIN_P…

安装Harbor

环境:OS:Centos 7说明:需要docker和 docker compose[root@node1 data]# docker version Client: Docker Engine - CommunityVersion: 26.1.4API version: 1.45Go version: go1.21.11Git commit: 5650f9bBuilt: Wed Jun 5 11:32:04…