Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OI算法竞赛中的树形数据结构
Search
MaskRay
July 26, 2011
Programming
16k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OI算法竞赛中的树形数据结构
OI算法竞赛中的树形数据结构
MaskRay
July 26, 2011
More Decks by MaskRay
See All by MaskRay
gcov与Clang中的实现
maskray
0
440
r2con 2017 r2cLEMENCy
maskray
3
14k
Cyber Grand Challenge及DEFCON 24 CTF决赛介绍
maskray
3
28k
Introduction to Makefile
maskray
2
15k
8门编程语言的设计思考
maskray
1
15k
Implementing a Simple Interpreter
maskray
0
300
2011年信息学竞赛冬令营《星际探险》
maskray
1
15k
Other Decks in Programming
See All in Programming
Build-to-own AI: Agentic Development for Humans
inesmontani
PRO
0
150
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
450
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
3.2k
AIが無かった頃の素敵な出会いの話
codmoninc
1
340
メールのエイリアス機能を履き違えない
isshinfunada
0
180
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
480
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
130
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
350
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
200
AIエージェントで 変わるAndroid開発環境
takahirom
2
760
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
210
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
510
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Making the Leap to Tech Lead
cromwellryan
135
10k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
440
Statistics for Hackers
jakevdp
799
230k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.7k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
240
The agentic SEO stack - context over prompts
schlessera
0
860
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
480
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
The Curse of the Amulet
leimatthew05
2
13k
Making Projects Easy
brettharned
120
6.7k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
350
Transcript
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 . . . . . . . 数据结构 宋方睿 2011-07-23
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 Outline . . . 1 数据结构 . . . 2 例题
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 数据结构 并査集 . Example (例题) . . . . . . . . http://poj.org/problem?id=1182 NOI 食物链(不必分 类讨论) http://poj.org/problem?id=1988 Cube Stacking http://poj.org/problem?id=1733 Parity game(有增强 版) 无向图,询问和一个点连通的权值最大的点,或删除 一条边: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCo 无向图,删点,问连通块数:JSOI 2008 星球大战
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 数据结构 线段树 操作 查询(当前线段被查询线段覆盖、递归查询当前线段 的左半部分和右半部分) 修改(当前线段被修改线段覆盖、递归修改当前线段 的左半部分和右半部分) 例题 段修改,点查询:http://poj.org/problem?id=2528 段修改,位运算:http://poj.org/problem?id=2777 段修改,查找最左边足够长的空位: http://poj.org/problem?id=3667 有若干连续段,查询某一段中最长连续段: http://poj.org/problem?id=3368
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 数据结构 二叉查找树 . 操作 . . . . . . . . 插入一个元素 删除一个元素 lower_bound upper_bound 查找第 k 小 获取指定元素名次
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 数据结构 二叉查找树 . 操作 . . . . . . . . 插入一个元素 删除一个元素 lower_bound upper_bound 查找第 k 小 获取指定元素名次 . Example (例题) . . . . . . . . NOI 2004 郁闷的出纳员 双端优先队列: http://poj.org/problem?id=3481 http://poj.org/problem?id=1442
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 数据结构 树状数组 . 操作 . . . . . . . . 点增减 段求和 段增减 查找第 k 小 线性时间建树
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 数据结构 树状数组 . Example (例题) . . . . . . . . 二维点修改,矩形查询: http://poj.org/problem?id=1195 结合 DFS:http://poj.org/problem?id=3321 Apple Tree 段增减,段求和:http://poj.org/problem?id=3468 A Simple Problem with Integers
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 数据结构 可合并堆 . Example (例题) . . . . . . . . http://acm.hdu.edu.cn/showproblem.php?pid=1512
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 数据结构 Splay Tree . Example (例题) . . . . . . . . 1˜N 的排列进行若干次翻转操作后输出结果: http://acm.sgu.ru/problem.php?contest=0&problem=187 点插入/删除/替换,询问最大子段和: http://www.spoj.pl/problems/GSS6/ http://poj.org/problem?id=3580 SuperMemo
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 例题 昨天的邓永行的题 . 简化大意 . . . . . . . . 优化 fi = min fj + |j − i − ai|
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 例题 ”Dynamic” Inversion . 大意 . . . . . . . . 1˜N(1<=N<=200000) 的排列,依次删除 M(1<=M<=100000) 个数,输出每次删除后的逆序数。 解法 线段树套二叉查找树 逆序处理操作,可以转化为只有插入
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 例题 PKU 2104 K-th Number . 大意 . . . . . . . . 长为 N(1<=N<=100000) 的序列,处理 M(1<=M<=5000) 的询问,每次询问一连续段中第 k 小的数。
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 例题 PKU 2104 K-th Number . 大意 . . . . . . . . 长为 N(1<=N<=100000) 的序列,处理 M(1<=M<=5000) 的询问,每次询问一连续段中第 k 小的数。 . 解法 . . . . . . . . 俗称“归并树”的解法 俗称“划分树”的解法
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 例题 PKU 2761 Feed the dogs K-th Number 的变化 . 大意 . . . . . . . . 长为 N(1<=N<=100000) 的序列,处理 M(1<=M<=50000) 的询问,每次询问一连续段中第 k 小 的数。区间不会互相包含。
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 例题 PKU 2761 Feed the dogs K-th Number 的变化 . 大意 . . . . . . . . 长为 N(1<=N<=100000) 的序列,处理 M(1<=M<=50000) 的询问,每次询问一连续段中第 k 小 的数。区间不会互相包含。 . 解法 . . . . . . . . 把所有询问区间按起始端点排序,维护第 k 小的数
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 例题 ZJU 2112 Dynamic Rankings K-th Number 的变化 . 大意 . . . . . . . . 长为 N(1<=N<=50000) 的序列,处理 M(1<=M<=10000) 的操作。操作有如下两种: 修改 a[i] 询问一连续段中第 k 小的数
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 例题 ZJU 2112 Dynamic Rankings K-th Number 的变化 . 大意 . . . . . . . . 长为 N(1<=N<=50000) 的序列,处理 M(1<=M<=10000) 的操作。操作有如下两种: 修改 a[i] 询问一连续段中第 k 小的数 . 解法 . . . . . . . . 二分,线段树套二叉查找树, O(n log n + m log B(log n)2) O((n + m) log(n + m) + m log n log(n + m))
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 例题 HDU 2473 Junk-Mail Filter . 简化大意 . . . . . . . . 合并两个集合;从一个集合中去除一个元素(该元素自成 一个集合) 。
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 例题 Beijing WinterCamp 2011 纸箱堆叠 . 大意 . . . . . . . . 纸箱 A 能放在纸箱 B 上当且仅当旋转后 A 的长宽高都大 于 B 的,问最多能叠几个箱子。
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 例题 Beijing WinterCamp 2011 纸箱堆叠 . 大意 . . . . . . . . 纸箱 A 能放在纸箱 B 上当且仅当旋转后 A 的长宽高都大 于 B 的,问最多能叠几个箱子。 . 解法 . . . . . . . . 线段树套二叉查找树 线段树套树状数组 树状数组套树状数组
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 例题 SHTSC 2009 会场预约 . 大意 . . . . . . . . 维护两种操作: 有一个新的预约是从“start 日”到“end 日” ,并且拒 绝掉所有与它相冲突的预约,输出拒绝掉的预约个数 输出当前仍然有效的预约的总数 解法 二叉查找树 线段树
. . . .. . . . .. . .
. .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . 数据结构 例题 SDTSC 2008 郁闷的小 J 大意 长为 N(1<=N<=100000) 的序列,处理 M(1<=M<=100000) 个操作,操作有两种形式: 修改某个位置上的数 询问某一连续段中某数出现次数 解法 用线段树将询问区间分成 $O(log n)$ 的区间,每个区 间存二叉查找树,关键字为数值 每个数值存二叉查找树,关键字为位置 二叉查找树维护 (值, 位置) 二元组 每次集中处理一个数,树状数组维护位置 (值, 位置) 离散化后用树状数组维护