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
29k
Introduction to Makefile
maskray
2
16k
8门编程语言的设计思考
maskray
1
16k
Implementing a Simple Interpreter
maskray
0
310
2011年信息学竞赛冬令营《星际探险》
maskray
1
16k
Other Decks in Programming
See All in Programming
AIの中の人になってみる
htkym
0
170
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.8k
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
640
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
160
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
130
ソフトウェアラスタライザ
fadis
1
790
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
260
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
230
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
500
Press start. Python's next generation.
willingc
PRO
3
320
高専キャリア LT 発表内容
crysta1221
6
5.6k
ALB ログから Trace を気合で繋げる技術
fohte
7
880
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
560
Scaling GitHub
holman
464
140k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
490
Abbi's Birthday
coloredviolet
3
9.8k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
370
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
510
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
680
Six Lessons from altMBA
skipperchong
29
4.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Typedesign – Prime Four
hannesfritz
42
3.2k
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)$ 的区间,每个区 间存二叉查找树,关键字为数值 每个数值存二叉查找树,关键字为位置 二叉查找树维护 (值, 位置) 二元组 每次集中处理一个数,树状数组维护位置 (值, 位置) 离散化后用树状数组维护