- 博客(35)
- 资源 (8)
- 收藏
- 关注
数据结构Advanced-Data-Structures
数据结构原本,大一统,外文书原版
Data structures
Contents
Articles
Introduction 1
Data structure 1
Linked data structure 3
Succinct data structure 6
Implicit data structure 8
Compressed data structure 9
Search data structure 10
Persistent data structure 11
Concurrent data structure 18
Abstract data types 21
Abstract data type 21
List 29
Stack 32
Queue 61
Deque 63
Priority queue 66
Map 70
Bidirectional map 73
Multimap 74
Set 75
Tree 80
Arrays 85
Array data structure 85
Row-major order 91
Dope vector 93
Iliffe vector 94
Dynamic array 95
Hashed array tree 98
Gap buffer 99
Circular buffer 101
Sparse array 111
Bit array 112
Bitboard 117
Parallel array 121
Lookup table 123
Lists 129
Linked list 129
XOR linked list 145
Unrolled linked list 147
VList 149
Skip list 151
Self-organizing list 157
Binary trees 162
Binary tree 162
Binary search tree 170
Self-balancing binary search tree 180
Tree rotation 182
Weight-balanced tree 185
Threaded binary tree 186
AVL tree 191
Red-black tree 195
AA tree 210
Scapegoat tree 215
Splay tree 219
T-tree 234
Rope 237
Top Trees 242
Tango Trees 246
Van Emde Boas tree 268
Cartesian tree 272
Treap 277
B-trees 281
B-tree 281
B+ tree 292
Dancing tree 297
2-3 tree 298
2-3-4 tree 299
Queaps 301
Fusion tree 305
Bx-tree 309
Heaps 312
Heap 312
Binary heap 315
Binomial heap 321
Fibonacci heap 326
2-3 heap 331
Pairing heap 331
Beap 334
Leftist tree 335
Skew heap 338
Soft heap 341
d-ary heap 343
Tries 346
Trie 346
Radix tree 353
Suffix tree 358
Suffix array 363
Compressed suffix array 367
FM-index 368
Generalised suffix tree 371
B-trie 372
Judy array 372
Directed acyclic word graph 374
Multiway trees 376
Ternary search tree 376
And–or tree 379
(a,b)-tree 380
Link/cut tree 381
SPQR tree 381
Spaghetti stack 384
Disjoint-set data structure 385
Space-partitioning trees 389
Space partitioning 389
Binary space partitioning 390
Segment tree 395
Interval tree 399
Range tree 404
Bin 406
k-d tree 408
Implicit k-d tree 416
min/max kd-tree 419
Adaptive k-d tree 420
Quadtree 421
Octree 427
Linear octrees 429
Z-order 429
UB-tree 434
R-tree 435
R+ tree 441
R* tree 442
Hilbert R-tree 445
X-tree 452
Metric tree 452
vP-tree 453
BK-tree 454
Hashes 455
Hash table 455
Hash function 468
Open addressing 476
Lazy deletion 479
Linear probing 479
Quadratic probing 480
Double hashing 484
Cuckoo hashing 486
Coalesced hashing 491
Perfect hash function 494
Universal hashing 496
Linear hashing 501
Extendible hashing 502
2-choice hashing 508
Pearson hashing 508
Fowler–Noll–Vo hash function 509
Bitstate hashing 511
Bloom filter 512
Locality preserving hashing 523
Morton number 524
Zobrist hashing 529
Rolling hash 530
Hash list 531
Hash tree 532
Prefix hash tree 534
Hash trie 535
Hash array mapped trie 535
Distributed hash table 536
Consistent hashing 542
Stable hashing 544
Koorde 544
Graphs 547
Graph 547
Adjacency list 549
Adjacency matrix 551
And-inverter graph 554
Binary decision diagram 556
Binary moment diagram 560
Zero-suppressed decision diagram 562
Propositional directed acyclic graph 563
Graph-structured stack 564
Scene graph 565
Appendix 570
Big O notation 570
Amortized analysis 581
Locality of reference 582
Standard Template Library 585
References
Article Sources and Contributors 596
Image Sources, Licenses and Contributors 605
Article Licenses
License 610
2017-10-14
背包九讲_2.0
Contents
1 01背包问题 2
1.1 题目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 基本思路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 优化空间复杂度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 初始化的细节问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 一个常数优化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.6 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 完全背包问题 4
2.1 题目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 基本思路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 一个简单有效的优化 . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 转化为01背包问题求解 . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.5 O(V N)的算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.6 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 多重背包问题 6
3.1 题目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 基本算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3 转化为01背包问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.4 O(VN)的算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.5 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 混合三种背包问题 8
4.1 问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2 01背包与完全背包的混合 . . . . . . . . . . . . . . . . . . . . . . . . 8
4.3 再加上多重背包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.4 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1
5 二维费用的背包问题 9
5.1 问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.2 算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.3 物品总个数的限制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.4 复整数域上的背包问题 . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.5 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6 分组的背包问题 10
6.1 问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.2 算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.3 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
7 有依赖的背包问题 10
7.1 简化的问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
7.2 算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
7.3 较一般的问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7.4 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
8 泛化物品 11
8.1 定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
8.2 泛化物品的和 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
8.3 背包问题的泛化物品 . . . . . . . . . . . . . . . . . . . . . . . . . . 12
8.4 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
9 背包问题问法的变化 13
9.1 输出方案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
9.2 输出字典序最小的最优方案 . . . . . . . . . . . . . . . . . . . . . . 13
9.3 求方案总数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
9.4 最优方案的总数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
9.5 求次优解、第K优解 . . . . . . . . . . . . . . . . . . . . . . . . . . 14
9.6 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2017-10-14
APIO2018 T2T3 题解 陈俊锟 吕欣 张瑞喆
第二题
重复下列算法:
每次选出半径最大的圆
删除和它有交的所有圆
这里有交指圆盘公共区域不为 0
求每个圆是哪一次被删除的
第三题
先从简单的题开始
给出一张无向图
求有多少 (
2018-07-26
APIO2018T1 New Home 题解 吕欣
题目大意
在一个数轴上:
给定 N 个商店,每个商店有一个开业时间、关门时间、坐标和销售物品的种类
同时有 M 个询问,每个询问给你一个时间 t[i] 和地点 d[i],试求在 t[i] 时刻,一个住在 d[i] 的人,为了买某种商品最远需要跑多长距离。
2018-07-26
骗分导论(OI)
0 前言 4
1 骗分——与复杂度的较量 6
2 参赛准备 7
2.1 心态——成就考试的前提 7
2.2 知己知彼, 百战不殆 8
2.2.1 单题的命制 8
2.2.2 测试数据的命制 10
2.2.3 套题的命制 11
2.3 应该学习的内容 12
2.4 找准位置, 水滴石穿 14
2.5 临阵磨枪, 不快也光 16
2.6 玩自己的养成游戏 17
3 复杂度常数优化 17
3.1 时间复杂度常数优化的意义 17
3.2 基本运算的速度 18
3.3 位运算的速度 20
3.4 数组运算的速度 23
3.5 实数运算的速度 24
1 博杰学习网, 官方顶级域名为 http://boj.pp.ru, 是本文作者的个人网站, 主要发表各学科竞赛( 主要是数
学、 信息学) 的信息动态、 竞赛试题解答、 学习资料、 个人研究成果, 趣味科学, 个人随笔文章, 班级事
务, 是石家庄二中首个学科竞赛资料库、 河北省信息学代表队资料库, 欢迎访问。
旗下网站有数之理论坛 http://boj.5d6d.com/, 属于数学、 信息学趣题、 文章、 资料交流的场所, 其中大量语
言精辟、 分析透彻的教程文章和趣味十足、 深入本质的趣题值得读者一看。
2 什么是信息学竞赛? 笔者认为, 信息学竞赛就是考察在有电脑的情况下“ 如何使用计算机代替人脑的工
作, 使得人的工作效率更高”, 就是考察应用计算机这个高效工具解决实际问题的能力。
3 本文所说的“ 骗分” 不是作弊, 而是尽可能多得分的应试技巧, 请不要误解。
NOI2009 河北省代表队论文 石家庄二中 李博杰 骗分导论·信息学竞赛
2
3.6 程序书写习惯 25
3.7 小算法 大优化 30
3.8 空间复杂度优化 33
3.9 降低编程复杂度 34
4 数学分析与猜想 41
4.1 数学与信息学 41
4.2 计算数学基础 45
4.2.1 素数判断算法 45
4.2.2 欧几里德算法 47
4.2.3 函数类算法 48
4.3 组合计数 50
4.4 计算几何算法 54
4.5 博弈论中的数学 61
4.5.1 纳什均衡 61
4.5.2 数学分析的应用 63
4.5.3 SG 定理与组合游戏 67
4.6 概率 68
4.7 组合构造 70
5 非完美算法 73
5.1 贪心法 74
5.2 随机法 78
5.3 试验法 78
5.4 调整法 78
5.5 模拟法 79
6 搜索算法 79
6.1 可行性剪枝 79
6.2 最优性剪枝 87
6.3 局部贪心、 动态规划 91
6.4 启发式搜索 92
7 骗分攻略 92
7.1 数学题——观察 92
7.2 小数据——交表 96
7.3 部分分——卡时 96
7.4 提交答案题——枚举 96
7.5 全面地考虑问题 98
7.6 设计获胜策略 103
8 调试程序 108
8.1 从静态查错开始 108
8.1.1 编译错误 108
8.1.2 运行错误 109
8.1.3 变量冲突 110
8.1.4 张冠李戴 115
8.1.5 正反对调 115
8.1.6 就差一点 116
NOI2009 河北省代表队论文 石家庄二中 李博杰 骗分导论·信息学竞赛
3
8.1.7 逻辑混乱 117
8.1.8 边界溢出 117
8.1.9 格式错误 117
8.1.10 忽略特例 118
8.1.11 分类失误 118
8.1.12 算法错误 118
8.2 善用输出语句 118
8.3 设计测试数据 122
8.4 考试有风险, 答题需谨慎 122
9 实战演习 124
9.1 2008 试题回顾与分析 124
9.1.1 2008 主要赛事题目与分类 124
9.1.2 题目方法与分类比例 126
9.1.3 竞赛规则 126
9.2 NOIP 模拟赛( 一) 127
9.3 NOIP 模拟赛( 二) 141
9.4 NOIP 模拟赛( 三) 154
9.5 NOIP 模拟赛( 四) 169
9.6 NOIP2008 183
9.6.1 笨小猴 184
9.6.2 火柴棒等式 186
9.6.3 传纸条 194
9.6.4 双栈排序 201
9.6.5 NOIP 小结 209
9.7 NOI2008 209
9.7.1 假面舞会 209
9.7.2 设计路线 211
9.7.3 志愿者招募 212
9.7.4 奥运物流 213
9.7.5 糖果雨 214
9.7.6 赛程安排 217
9.8 WC2009 219
9.8.1 最短路问题 219
9.8.2 语音识别 220
9.8.3 优化设计 223
9.9 CTSC2008 225
9.9.1 三角形的教学楼 225
9.9.2 祭祀 227
9.9.3 奥运抽奖 229
9.9.4 图腾 231
9.9.5 网络管理 232
9.9.6 唯美村落 234
9.10 IOI2008 236
10 骗分的实质 236
NOI2009 河北省代表队论文 石家庄二中 李博杰 骗分导论·信息学竞赛
4
10.1 Keep it simple and stupid 236
10.2 告别骗分 237
参考文献 238
感谢 238
后记——程序人生 238
2017-10-14
Lua中文教程
目录
版权声明 ........................................................................................................................................ i
译序 ................................................................................................................................................ i
目录 .............................................................................................................................................. iii
第一篇 语言 ................................................................................................................................. 1
第 0 章 序言 ................................................................................................................................. 1
0.1 序言 .................................................................................................................................... 1
0.2 Lua的使用者....................................................................................................................... 2
0.3 Lua的相关资源 ................................................................................................................... 3
0.4 本书的体例 ........................................................................................................................ 3
0.5 关于本书 ............................................................................................................................ 3
0.6 感谢 .................................................................................................................................... 4
第 1 章 起点 ................................................................................................................................. 5
1.1 Chunks................................................................................................................................. 5
1.2 全局变量 ............................................................................................................................ 7
1.3 词法约定 ............................................................................................................................ 7
1.4 命令行方式 ........................................................................................................................ 7
第 2 章 类型和值 ......................................................................................................................... 9
2.1 Nil........................................................................................................................................ 9
2.2 Booleans .............................................................................................................................. 9
2.3 Numbers............................................................................................................................. 10
2.4 Strings................................................................................................................................ 10
2.5 Functions ........................................................................................................................... 12
2.6 Userdata and Threads ........................................................................................................ 12
第 3 章 表达式 ........................................................................................................................... 13
3.1 算术运算符 ...................................................................................................................... 13
3.2 关系运算符 ...................................................................................................................... 13
3.3 逻辑运算符 ...................................................................................................................... 13
3.4 连接运算符 ...................................................................................................................... 14
3.5 优先级 .............................................................................................................................. 15
3.6 表的构造 ........................................................................................................................... 15
第 4 章 基本语法 ....................................................................................................................... 18
4.1 赋值语句 .......................................................................................................................... 18
4.2 局部变量与代码块(block) ......................................................................................... 19
4.3 控制结构语句 .................................................................................................................. 20
Programming in Lua iv
Copyright ® 2005, Translation Team, www.luachina.net
4.4 break和return语句............................................................................................................. 23
第 5 章 函数 ............................................................................................................................... 24
5.1 返回多个结果值 .............................................................................................................. 25
5.2 可变参数 ........................................................................................................................... 27
5.3 命名参数 .......................................................................................................................... 28
第 6 章 再论函数 ....................................................................................................................... 30
6.1 闭包 .................................................................................................................................. 32
6.2 非全局函数 ...................................................................................................................... 34
6.3 正确的尾调用(Proper Tail Calls) ............................................................................... 36
第 7 章 迭代器与泛型for........................................................................................................... 40
7.1 迭代器与闭包 .................................................................................................................. 40
7.2 范性for的语义.................................................................................................................. 42
7.3 无状态的迭代器 .............................................................................................................. 43
7.4 多状态的迭代器 .............................................................................................................. 44
7.5 真正的迭代器 .................................................................................................................. 45
第 8 章 编译·运行·调试 ....................................................................................................... 47
8.1 require函数........................................................................................................................ 49
8.2 C Packages......................................................................................................................... 50
8.3 错误 .................................................................................................................................. 51
8.4 异常和错误处理 .............................................................................................................. 52
8.5 错误信息和回跟踪(Tracebacks) ................................................................................ 53
第 9 章 协同程序 ....................................................................................................................... 56
9.1 协同的基础 ...................................................................................................................... 56
9.2 管道和过滤器 .................................................................................................................. 58
9.3 用作迭代器的协同 .......................................................................................................... 61
9.4 非抢占式多线程 .............................................................................................................. 63
第 10 章 完整示例 ..................................................................................................................... 68
10.1 Lua作为数据描述语言使用 ........................................................................................... 68
10.2 马尔可夫链算法 ............................................................................................................ 71
第二篇 tables与objects............................................................................................................... 75
第 11 章 数据结构 ..................................................................................................................... 76
11.1 数组 ................................................................................................................................ 76
11.2 阵和多维数组 ................................................................................................................ 77
11.3 链表 ................................................................................................................................ 78
11.4 队列和双端队列 ............................................................................................................ 78
11.5 集合和包 ........................................................................................................................ 80
11.6 字符串缓冲 .................................................................................................................... 80
第 12 章 数据文件与持久化 ..................................................................................................... 84
12.1 序列化 ............................................................................................................................ 86
Programming in Lua v
Copyright ® 2005, Translation Team, www.luachina.net
第 13 章 Metatables and Metamethods ...................................................................................... 92
13.1 算术运算的Metamethods............................................................................................... 92
13.2 关系运算的Metamethods............................................................................................... 95
13.3 库定义的Metamethods................................................................................................... 96
13.4 表相关的Metamethods................................................................................................... 97
第 14 章 环境 ........................................................................................................................... 103
14.1 使用动态名字访问全局变量 ...................................................................................... 103
14.2 声明全局变量 ............................................................................................................... 104
14.3 非全局的环境 .............................................................................................................. 106
第 15 章 Packages .................................................................................................................... 109
15.1 基本方法 ...................................................................................................................... 109
15.2 私有成员(Privacy) ...................................................................................................111
15.3 包与文件 .......................................................................................................................112
15.4 使用全局表 ...................................................................................................................113
15.5 其他一些技巧(Other Facilities)...............................................................................115
第 16 章 面向对象程序设计 ....................................................................................................118
16.1 类 ...................................................................................................................................119
16.2 继承 .............................................................................................................................. 121
16.3 多重继承 ...................................................................................................................... 122
16.4 私有性(privacy) ...................................................................................................... 125
16.5 Single-Method的对象实现方法 ................................................................................... 127
第 17 章 Weak表 ...................................................................................................................... 128
17.1 记忆函数 ...................................................................................................................... 130
17.2 关联对象属性 .............................................................................................................. 131
17.3 重述带有默认值的表 .................................................................................................. 132
第三篇 标准库 ......................................................................................................................... 134
第 18 章 数学库 ....................................................................................................................... 135
第 19 章 Table库 ...................................................................................................................... 136
19.1 数组大小 ....................................................................................................................... 136
19.2 插入/删除 ..................................................................................................................... 137
19.3 排序 .............................................................................................................................. 137
第 20 章 String库 ..................................................................................................................... 140
20.1 模式匹配函数 .............................................................................................................. 141
20.2 模式 .............................................................................................................................. 143
20.3 捕获(Captures) ........................................................................................................ 146
20.4 转换的技巧(Tricks of the Trade)............................................................................ 151
第 21 章 IO库........................................................................................................................... 157
21.1 简单I/O模式................................................................................................................. 157
21.2 完全I/O 模式............................................................................................................... 160
Programming in Lua vi
Copyright ® 2005, Translation Team, www.luachina.net
第 22 章 操作系统库 ............................................................................................................... 165
22.1 Date和Time ................................................................................................................... 165
22.2 其它的系统调用 .......................................................................................................... 167
第 23 章 Debug库..................................................................................................................... 169
23.1 自省(Introspective) ................................................................................................. 169
23.2 Hooks............................................................................................................................. 173
23.3 Profiles........................................................................................................................... 174
第四篇 C API ........................................................................................................................... 177
第 24 章 C API纵览 ................................................................................................................. 178
24.1 第一个示例程序 .......................................................................................................... 179
24.2 堆栈 .............................................................................................................................. 181
24.3 C API的错误处理 ......................................................................................................... 186
第 25 章 扩展你的程序 ........................................................................................................... 188
25.1 表操作 .......................................................................................................................... 189
25.2 调用Lua函数 ................................................................................................................ 193
25.3 通用的函数调用 .......................................................................................................... 195
第 26 章 调用C函数................................................................................................................. 198
26.1 C 函数........................................................................................................................... 198
26.2 C 函数库....................................................................................................................... 200
第 27 章 撰写C函数的技巧..................................................................................................... 203
27.1 数组操作 ...................................................................................................................... 203
27.2 字符串处理 .................................................................................................................. 204
27.3 在C函数中保存状态.................................................................................................... 207
第 28 章 User-Defined Types in C ........................................................................................... 212
28.1 Userdata......................................................................................................................... 212
28.2 Metatables...................................................................................................................... 215
28.3 访问面向对象的数据 .................................................................................................. 217
28.4 访问数组 ...................................................................................................................... 219
28.5 Light Userdata ............................................................................................................... 220
第 29 章 资源管理 ................................................................................................................... 222
29.1 目录迭代器 .................................................................................................................. 222
29.2 XML解析 ...................................................................................................................... 225
2017-10-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅