当前位置: 首页 > news >正文

学习笔记

数据结构

莫队

优秀的暴力,我觉得这个算法非常具有美感。
巧妙运用了分块的思想。
莫队主要解决区间问题,适用范围是当前的区间 \(l,r\) 的答案可以从 \(l-1,r\)\(l,r-1\) 转移而来且支持离线。
首先对原序列进行分块,接着根据当前区间左端点所属块对询问离线后排序。接着按照上述做法暴力计算每个区间。
时间复杂度 \(O(n\sqrt{n})\),证明略。
一些细节:莫队一般需要卡常,有几个常见优化如下。

  1. 奇偶排序:如果左端点相同按照左端点的奇偶性,对右端点进行排序,如果左端点为奇数,右端点递增排序;左端点为偶数,右端点递减排序。
  2. 块长:设置为 \(n/\sqrt m\) 一般较优,也可以直接分析完之后在代码中计算或手动计算一个块长。

相关题目:

P2709 小B的询问
P1903 [国家集训队] 数颜色 / 维护队列
P3709 大爷的字符串题

线段树

动态开点

普通线段树中一般节点会有很多浪费,很大一部分节点不会被用到,如果题目卡空间,需要使用动态开点
比较好理解的一个优化,大致思想就是节点被用到了再开,然后在结构体中记录节点的左右儿子。

权值线段树

这一类线段树较为特殊,一般维护的是原序列的某个权值,较为常见的是维护数的出现次数。
比如题目要求求出大小在 \(l,r\) 范围内的数有多少个,这时候就可以使用权值线段树来维护。
如果题目数据范围较大,需要使用到动态开点。

可持久化线段树

主要思想是对于每次新增的版本不新开整一个线段树,而是在原来的基础上新增被修改的点。由于每次被修改的点最多只有 \(logn\)个,因此空间复杂度从 \(n^2\) 优化到了 \(nlogn\)

主席树

同时利用了权值线段树和可持久化还有动态开点。
以模板题静态区间第 \(k\) 小为例子。
对于原序列的每个数建一个版本。
可以发现 \(l,r\) 区间内每个值域的 \(cnt\) 应为第 \(r\) 个版本的 \(cnt\) 减去第 \(l-1\) 个版本的 \(cnt\)
于是双指针在主席树上同步搜索 \(l,r\) 的第 \(k\) 小。

图论

网络流

网络流的题目一般难点在于建模。但我一开始学网络流被卡在了反向边那里。
感性理解了一下,反向边主要解决的是在求一次增广路途中可能找到的不是最优的,而利用反向边可以进行一个反悔操作。

EK

用bfs不停找增广路,然后扩充最大流量,时间复杂度较劣,有时候懒得打dinic了可以用用。

dinic

先用一遍bfs给每个节点标上层次,然后再用dfs找增广路。时间复杂度较优,且实现难度不大,常用。

最小割最大流定理

最小割数=最大流

相关题目:

P2472 [SCOI2007]蜥蜴
P4001 [ICPC-Beijing 2006] 狼抓兔子


开始动笔:2025/9/7
upd:新增线段树部分的知识和部分知识点的补充 2025/9/9

http://www.hskmm.com/?act=detail&tid=1038

相关文章:

  • 学生开发者经验|豆包大模型 + TRAE,让 AI 应用快速落地
  • 绪论与Java基本语法课前问题
  • openssl编程之sm2密钥生成
  • 查看mysql具体使用那个glibc的版本的mysql
  • 【A】月半猫想吃麦当劳(待完坑)
  • 【A】宝宝肚肚打雷了(待完坑)
  • 01_TCP协议概念
  • 【A】杂题宣讲(待完坑)
  • 登录认证-上篇:基于 Session 的传统身份验证
  • 【A】chipi chipi chapa chapa
  • vLLM框架本地布署Qwen3-32B模型 - yi
  • 项目管理软件中有哪些不同的模块以及如何导出其报告?
  • Kubernetes命名空间(Namespace)
  • linux安装python
  • 【IEEE、电力学科品牌会议】第五届智能电力与系统国际学术会议(ICIPS 2025)
  • Vllm部署大模型
  • CE第9关X64版本问题记录
  • 题解:P14013 [POCamp 2023] 送钱 / The Generous Traveler
  • 第十三届 TCCT 随机系统与控制专题研讨会 暨2025年智能控制与计算科学国际学术会议 (ICICCS 2025)
  • 注释
  • Microsoft 推出 .NET 10 RC 1
  • 2025 第九届控制工程与先进算法国际论坛(IWCEAA 2025)
  • 高等代数 I
  • kotlin中的netty
  • 多态
  • 数学分析 I note
  • 高等代数 I note
  • JAVA反编译神器CFR
  • 记录一下由于VS中qt的插件自动升级引发的编译问题
  • flutter右滑返回直接返回到native问题