欢迎光临散文网 会员登陆 & 注册

算法竞赛

2023-06-26 23:46 作者:没有名字如何行走江湖  | 我要投稿

链接:pan.baidu.com/s/1nCBflsAaF6NH6beZ40gxew?pwd=go2w 

提取码:go2w

第1章基础数据结构

1.1链表

1.1.1动态链表

1.1.2静态链表

1.1.3STL list

1.2队列

1.2.1STL queue

1.2.2手写循环队列

1.2.3双端队列和单调队列

1.2.4优先队列

1.3栈

1.3.1STL stack

1.3.2手写栈

1.3.3单调栈

1.4二叉树和哈夫曼树

1.4.1二叉树的概念

1.4.2二叉树的遍历

1.4.3哈夫曼树和哈夫曼编码

1.5堆

1.5.1二叉堆的概念

1.5.2二叉堆的操作

1.5.3二叉堆的手写代码

1.5.4堆和priority_queue

小结

第2章基本算法

2.1算法复杂度

2.1.1算法的概念

2.1.2复杂度和大O记号

2.2尺取法

2.2.1尺取法的概念

2.2.2反向扫描

2.2.3同向扫描

2.3二分法

2.3.1二分法的理论背景

2.3.2整数二分

2.3.3实数二分

2.4三分法

2.4.1原理

2.4.2实数三分

2.4.3整数三分

2.5倍增法与ST算法

2.5.1倍增法

2.5.2ST算法

2.6前缀和与差分

2.6.1一维差分

2.6.2二维差分

2.6.3三维差分

2.7离散化

2.7.1离散化的概念

2.7.2离散化手工编码

2.7.3用STL函数实现离散化

2.7.4离散化的应用

2.8排序与排列

2.8.1排序函数

2.8.2排列

2.9分治法

2.9.1汉诺塔和快速幂

2.9.2归并排序

2.9.3快速排序

2.10贪心法与拟阵

2.10.1贪心法

2.10.2拟阵

小结

第3章搜索

3.1BFS和DFS基础

3.1.1搜索简介

3.1.2搜索算法的基本思路

3.1.3BFS的代码实现

3.1.4DFS的常见操作和代码框架

3.1.5BFS和DFS的对比

3.1.6连通性判断

3.2剪枝

3.2.1BFS判重

3.2.2剪枝的应用

3.3洪水填充

3.4BFS与最短路径

3.5双向广搜

3.5.1双向广搜的原理和复杂度分析

3.5.2双向广搜的两种实现

3.5.3双向广搜例题

3.6BFS与优先队列

3.7BFS与双端队列

3.8A*算法

3.8.1贪心最优搜索和Dijkstra算法

3.8.2A*算法的原理和复杂度

3.8.33种算法的对比

3.8.4h函数的设计

3.8.5A*算法例题

3.9IDDFS和IDA*

3.9.1IDDFS

3.9.2IDA*

小结

第4章高级数据结构

4.1并查集

4.1.1并查集的基本操作

4.1.2合并的优化

4.1.3查询的优化(路径压缩)

4.1.4带权并查集

4.2树状数组

4.2.1树状数组的概念和基本编码

4.2.2树状数组的基本应用

4.2.3树状数组的扩展应用

4.3线段树

4.3.1线段树的概念

4.3.2区间查询

4.3.3区间操作与LazyTag

4.3.4线段树的基础应用

4.3.5区间最值和区间历史最值

4.3.6区间合并

4.3.7扫描线

4.3.8二维线段树(树套树)

4.4可持久化线段树

4.4.1可持久化线段树的思想

4.4.2区间第k大/小问题

4.4.3其他经典问题

4.5分块与莫队算法

4.5.1分块

4.5.2基础莫队算法

4.5.3带修改的莫队算法

4.5.4树上莫队

4.6块状链表

4.7简单树上问题

4.7.1树的重心

4.7.2树的直径

4.8LCA

4.8.1倍增法求LCA

4.8.2Tarjan算法求LCA

4.8.3LCA的应用

4.9树上的分治

4.9.1静态点分治

4.9.2动态点分治

4.10树链剖分

4.10.1树链剖分的概念与LCA

4.10.2树链剖分的典型应用

4.11二叉查找树

4.12替罪羊树

4.12.1不平衡率

4.12.2替罪羊树的操作

4.12.3例题

4.13Treap树

4.13.1Treap树的性质

4.13.2基于旋转法的Treap树操作

4.14FHQ Treap树

4.14.1FHQ的基本操作

4.14.2FHQ Treap树的应用

4.15笛卡儿树

4.15.1笛卡儿树的概念

4.15.2用单调栈建笛卡儿树

4.15.3笛卡儿树和RMQ问题

4.16Splay树

4.16.1Splay旋转

4.16.2Splay树的平摊分析

4.16.3Splay树的常用操作和代码

4.17KD树

4.17.1从空间到二叉树的转换

4.17.2KD树的概念和基本操作

4.17.3寻找最近点

4.17.4区间查询

4.18动态树与LCT

4.18.1LCT的思想

4.18.2从原树到辅助树

4.18.3LCT的存储和性质

4.18.4LCT的操作

4.18.5LCT的基本应用

小结

第5章动态规划

5.1DP概念和编程方法

5.1.1DP的概念

5.1.2DP的两种编程方法

5.1.3DP的设计和实现

5.1.4滚动数组

5.2经典线性DP问题

5.3数位统计DP

5.3.1数位统计DP的递推实现

5.3.2数位统计DP的记忆化搜索实现

5.3.3数位统计DP例题

5.4状态压缩DP

5.4.1引子

5.4.2状态压缩DP的原理

5.4.3状态压缩DP例题

5.4.4三进制状态压缩DP

5.5区间DP

5.5.1石子合并问题和两种模板代码

5.5.2区间DP例题

5.5.3二维区间DP

5.6树形DP

5.6.1树形DP的基本操作

5.6.2背包与树形DP

5.7一般优化

5.8单调队列优化

5.8.1单调队列优化的原理

5.8.2单调队列优化例题

5.9斜率优化/凸壳优化

5.9.1把状态转移方程变换为平面的斜率问题

5.9.2求一个dp[i]

5.9.3求所有dp[i]

5.9.4例题

5.10四边形不等式优化

5.10.1应用场合

5.10.2四边形不等式优化操作

5.10.3四边形不等式定义和单调性定义

5.10.4四边形不等式定理

5.10.5例题

小结

源码下载

第6章数论和线性代数

小结

第7章组合数学

第8章计算几何

小结

第9章字符串

小结

第10章图论

小结

附录APython在竞赛中的应用

A.1大数计算

A.2构造测试数据和对拍

A.2.1构造随机数据

A.2.2数据去重

A.2.3对拍

A.3输入/输出

索引

查看全部↓

前言/序言

读者拿到这本书的第一感觉可能是: 这本书真厚。接下来他有点忐忑和疑惑: 这本书虽然厚,但是它有价值吗?它的内容和风格适合我吗?还有其他的一些问题。下面做一个详细的解答。

为什么学算法竞赛

算法竞赛是计算机相关竞赛中影响最大的分支。目前国内影响大的计算机算法类竞赛有全国青少年信息学奥林匹克竞赛(NOI)、国际大学生程序设计竞赛(ICPC)、中国大学生程序设计竞赛(CCPC)、蓝桥杯全国软件和信息技术专业人才大赛(软件类)、中国高校计算机大赛团体程序设计天梯赛等。每个竞赛每年的参赛者,少则几万人,多则十几万人。

在大学里,与算法竞赛相关的课程有“计算机程序设计”“数据结构与算法”“算法分析与设计”“程序阅读与编程实践”“算法与程序设计实践”“算法艺术与竞赛”等。

在算法竞赛中获奖有很多好处。在学校可以获得奖学金,保研时获得加分。毕业找工作时更有用,一张算法竞赛的获奖证书

是用人单位判断求职者能力的重要依据。算法竞赛受到学校、学生、用人单位的重视和欢迎。

学习和参加算法竞赛,是通往杰出程序员的捷径。竞赛的获奖者基本上都成长为出色的软件工程师,并且有很多人是IT公司的创业者。例如当前热门的自动驾驶公司小马智行的联合创始人兼CTO楼天城,是2009年ICPC全球总决赛第二名; 元戎启行公司的员工大多数是ICPC的金牌队员。


算法竞赛的评论 (共 条)

分享到微博请遵守国家法律