算法竞赛入门经典:训练指南.pdf

算法竞赛入门经典:训练指南.pdf
 

书籍描述

编辑推荐
《算法竞赛入门经典:训练指南》题目多选自近年来ACM/ICPC区域赛和总决赛真题,内容全面,信息量大,覆盖了常见算法竞赛中的大多数细分知识点。书中还给出了所有重要的经典算法的完整程序,以及重要例题的核心代码,既适合选手自学,也方便教练组织学习和训练。

作者简介
刘汝佳,1982年12月生,高中毕业于重庆市外国语学校。2000年3月获得NOI2000全国青少年信息学奥林匹克竞赛一等奖第四名,进入国家集训队,并因此保送到清华大学计算机科学与技术系。大一时获2001年ACM/ICPC国际大学生程序设计竞赛亚洲—上海赛区冠军和2002年世界总决赛银牌(世界第四),2005年获学士学位,2008年获硕士学位。学生时代曾为中国计算机学会NOI科学委员会学生委员,担任IOI2002—2008@国国家队教练,并为NOI系列比赛命题十余道。现为NOI竞赛委员会委员。并在NOI 25周年时获得中国计算机学会颁发的“特别贡献奖”。2004年至今共为ACM/ICPC亚洲赛区命题二十余道,担任6次裁判和2次命题总监。并应邀参加IOI和ACM/ICPC相关国际研讨会,发表论文两篇。2004年初作为第一作者出版专著《算法艺术与信息学竞赛》,2009年出版译著《编程挑战》。多年来在全国二十余个城市进行中学生竞赛培训工作,为北京、上海、吉隆坡等地的著名高校授课与宣讲,并多次与TopCoder、百度和网易有道等知名企业合作举办比赛,让更多的IT人才获得展示自我的平台。
陈锋,1982年9月生。毕业于华北水利水电学院机械设计专业。曾就职于微软全球技术支持中心,负责net虚拟机以及Visual Studio开发技术支持。后进入金融IT行业,专注于银行网点平台的产品研发,曾分别负责基于.net和Eclipse的两代网点平台产品的开发以及架构设计。现就职于北京宇信易诚科技,任前端产品技术经理及架构师。

目录
第1章算法设计基础
1.1思维的体操
1.2问题求解常见策略
1.3高效算法设计举例
1.4动态规划专题
1.5小结与习题
第2章数学基础
2.1基本计数方法
2.2递推关系
2.3 数论
2.3.1基本概念
2.3.2模方程
2.4组合游戏
2.5概率与数学期望
2.6置换及其应用
2.7矩阵和线性方程组
2.8数值方法简介
2.9小结与习题
第3章实用数据结构
3.1基础数据结构回顾
3.1.1抽象数据类型(ADT)
3.1.2优先队列
3.1.3并查集
3.2区间信息的维护与查询
3.2.1二叉索引树(树状数组)
3.2.2 RMQ问题
3.2.3线段树(1):点修改
3.2.4线段树(2):区间修改
3.3字符串(1)
3.3.1 Trie
3.3.2 KMP算法
3.3.3 Aho—Corasick自动机
3.4字符串(2)
3.4.1 后缀数组
3.4.2最长公共前缀(LCP)
3.4.3基于哈希值的LCP算法
3.5排序二叉树
3.5.1基本概念
3.5.2用Treap实现名次树
3.5.3用伸展树实现可分裂与合并的序列
3.6小结与习题
第4章几何问题
4.1二维几何基础
4.1.1基本运算
4.1.2点和直线
4.1.3多边形
4.1.4例题选讲
4.1.5二维几何小结
4.2与圆和球有关的计算问题
4.2.1 圆的相关计算
4.2.2球面相关问题
4.3二维几何常用算法
4.3.1点在多边形内判定
4.3.2凸包
4.3.3半平面交
4.3.4平面区域
4.4三维几何基础
4.4.1三维点积
4.4.2三维叉积
4.4.3三维凸包
4.4.4例题选讲
4.4.5三维几何小结
4.5小结与习题
第5章图论算法与模型
5.1基础题目选讲
5.2深度优先遍历
5.2.1 无向图的割顶和桥
5.2.2无向图的双连通分量
5.2.3有向图的强连通分量
5.2.4 2—SAT问题
5.3最短路问题
5.3.1再谈Dijkstra算法
5.3.2再谈Bellman—Ford算法
5.3.3例题选讲
5.4生成树相关问题
5.5二分图匹配
5.5.1二分图最大匹配
5.5.2二分图最佳完美匹配
5.5.3稳定婚姻问题
5.5.4常见模型
5.6网络流问题
5.6.1最短增广路算法
5.6.2最小费用最大流算法
5.6.3建模与模型变换
5.6.4例题选讲
5.7小结与习题
第6章更多算法专题
6.1轮廓线动态规划
6.2嵌套和分块数据结构
6.3暴力法专题
6.3.1路径寻找问题
6.3.2对抗搜索
6.3.3精确覆盖问题和DLX算法
6.4几何专题
6.4.1仿射变换与矩阵
6.4.2离散化和扫描法
6.4.3运动规划
6.5 数学专题
6.5.1小专题集锦
6.5.2快速傅里叶变换(FFT)
6.5.3线性规划
6.6浅谈代码设计与静态查错
6.6.1简单的Bash
6.6.2 《仙剑奇侠传四》之最后的战役
6.7小结与习题
附录A训练指南:使用OVa/LA题库
A.1 UVa在线比赛推荐
A.2 LA套题(ACM/ICPC真题)推荐
A.3 UVa在线比赛单题推荐
附录B Java、C#和Python语言简介
B.1 Java
B.2 C#
B.3 Python

文摘
版权页:

算法竞赛入门经典:训练指南

插图:

算法竞赛入门经典:训练指南

【输入格式】
输入包含多组数据。每组数据的第一行为学生个数n(1≤n≤500000);以下每行包含两个不同的非负整数A和B,表示该学生想从A学校换到B学校。输入结束标志为n=0。
【输出格式】
对于每组数据,输出YES或者NU。
复合词(Compound Words,UVa 10391)
给定一个词典,要求找出其中所有的复合词,即恰好由两个单词连接而成的单词。
【输入格式】
输入只有一组数据,其中每行都是一个由小写字母组成的单词。输入已按照字典序排序,且不超过120000个单词。
【输出格式】
输出所有复合词,按照字典序排列。
Gergovia的酒交易(Wire trading in Gergovia,UVa 11054)
直线上有n个等距的村庄,每个村庄要么买酒,要么卖酒。把k个单位的酒从一个村庄运到相邻村庄需要k个单位的劳动力。问最少需要多少劳动力才能满足所有村庄的需求。
【输入格式】
输入包含多组数据。每组数据的第一行为村庄个数n(2≤n≤100000);第二行从左到右给出各个村庄对酒的需求ai(—1000≤a≤1000),其中ai>0表示买酒,ai<0表示卖酒。输入保证所有ai之和等于0。输入结束标志为n=0。
【输出格式】
输出劳动力总和的最小值。输出保证在64位带符号整数的范围内。
平均值(Average,Seoul 2009,LA 4726)
给定一个长度为n的01序列,选一个长度至少为L的连续子序列,使得子序列中数字的平均值最大。如果有多解,子序列长度应尽量小;如果仍有多解,起点编号应尽量小。序列中的字符编号为1~n,因此[I,n]就是指完整的序列。
例如,对于长度为17的序列00101011011011010,如果L=7,子序YU[7,14]的平均值最大,为6/8(它的长度为8);如果L=5,子序列[7,11]的平均值最大,为4/5。
【输入格式】
输入的第一行为数据组数T。每组数据的第一行为两个整数胛和L(1≤n≤100000,1≤L≤1000),第二行为一个长度为n的01序列。
【输出格式】
对于每组数据,输出满足条件的最优子序列的起点和终点编号。
餐厅(Restaurant,Deajon,2010,LA4851)
有一个M×M的网格,左下角坐标为(0,0),右上角坐标为(M—1,M—1)。网格里有两个y坐标相同的宾馆A和B,以及n个餐厅。宾馆A和宾馆B里各有一个餐厅,编号为1和2,其他地方的餐厅编号为3~n。现在你打算开一家新餐厅,需要考查一下可能的位置。

内容简介
《算法竞赛入门经典:训练指南》是《算法竞赛入门经典》的重要补充,旨在补充原书中没有涉及或者讲解得不够详细的内容,从而构建一个较完整的知识体系,并且用大量有针对性的题目,让抽象复杂的算法和数学具体化、实用化。《算法竞赛入门经典:训练指南》共6章,分别为算法设计基础、数学基础、实用数据结构、几何问题、图论算法与模型和更多算法专题,全书通过近200道例题深入浅出地介绍了上述领域的各个知识点、经典思维方式以及程序实现的常见方法和技巧,并在章末和附录中给出了丰富的分类习题,供读者查漏补缺和强化学习效果。

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多