Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
OI算法竞赛中的树形数据结构
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
450
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
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.6k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
380
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
430
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
210
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
260
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
210
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.1k
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
5.8k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
410
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
590
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
160
FreeBSDでZabbixを動かす
kenkino
0
350
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
620
Documentation Writing (for coders)
carmenintech
77
5.6k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
260
Practical Orchestrator
shlominoach
192
12k
Agile that works and the tools we love
rasmusluckow
331
22k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
550
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
310
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
410
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
780
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
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)$ 的区间,每个区 间存二叉查找树,关键字为数值 每个数值存二叉查找树,关键字为位置 二叉查找树维护 (值, 位置) 二元组 每次集中处理一个数,树状数组维护位置 (值, 位置) 离散化后用树状数组维护