
| 如果说信息科学与计算机技术为我们开辟了一片新的天地,程序设计是这片天地的灵魂居住的花园,那么程序设计竞赛则是点缀这个花园,使她充满灵气的塔宇。 计算机解题的核心是算法设计。算法设计涉及许多先修的基础知识,包括数据结构、高级语言程序设计、离散数学、图论、组合数学、人工智能、计算几何等。当然还包括除数学与信息学之外的其他学科知识,因为没有这些知识,往往连题目都会看不懂,这可能也是要求参加ACM大赛的选手应该具备全面科学素养的原因之一。 刘汝佳、黄亮两位作者都曾在高中时参加过信息学奥林匹克竞赛活动,他们在如何用计算机解难题方面投入过很大精力,有着比较丰富的经验。 |
| 刘汝佳 1982年12月生。于2000年3月获得NOI2000全国青少年信息学奥林匹克竞赛一等奖第四名,进入国家集训队,并因此保送到清华大学计算机科学与技术系学习至今。2000年9月建立个人网站 "信息学初学者之家(OIBH)",该网站现已成为国内最具影口向力的信息学竞赛网站之一。大一时参加ACH/ICPC国际大学生程序设计竞赛,获得2001年亚洲-上海赛区冠军和2002年世界总决赛银牌(世界第四),并担任2002年和2003年北京赛区裁判。2003年12月为止共为全国青少年信息学竞赛(NOI)、IOI中国国家队.. << 查看详细 |
| 第1章 算法与数据结构 1.1 编程的灵魂--数据结构+算法=程序 1.2 基本算法 1.2.1 枚举 1.2.2 贪心法 1.2.3 递归与分治法 1.2.4 递推 1.3 数据结构(1)--入门 1.3.1 栈和队列 1.3.2 串 1.3.3 树和二叉树 1.3.4 力瘃其基本算法 1.3.5 排序与检索基本算法 1.4 数据结构(2)--拓宽和应用举例 1.4.1 并查集 1.4.2 堆及其变种 1.4.3 字典的两种实现方式:哈希表、二叉搜索树 1.4.4 两个特殊树结构:线段树和trie 1.5 动态规划 1.5.1 动态规划的两种动机 .1.5.2 常见模型的分析 1.5.3 若干经典问题和常见优化方法 1.6 状态空间搜索 1.6.1 状态空间 1.6.2 盲目搜索算法 1.6.3 启发式搜索算法 1.6.4 博弈问题算法 1.6.5 剪枝 *1.6.6 专题:路径寻找问题 *1.6.7 约束满足问题 第2章 数学方法与常见模型 2.1 代数方法和模型 2.2 数论基础 2.2.1 素数和整除问题 2.2.2 进位制 2.2.3 同余模算术 2.3 组合数学初步 2.3.1 鸽笼原理和ramsey定理 2.3.2 排列组合和容斥原理 2.3.3 群论与polya定理 2.3.4 递推关系与生成函数 2.3.5 离散变换与反演 2.4 图论基本知识和算法 2.4.1 基本概念和定理 2.4.2 可行遍性问题简介 2.4.3 平面图 2.4.4 图的基本算法与应用举例 2.5 图论基本算法 2.5.1 生成树问题 2.5.2 最短路问题 2.5.3 网络流问题 2.5.4 二分图相关问题和模型 第3章 计算机几何初步 3.1 位置和方向的世界--计算机几何的基本问题 3.1.1 从相交到左右--基本问题的转化 3.1.2 左右和前后--叉积和点积 3.2 多边形和多面体的相关问题 3.2.1 卫兵问题--多边形和多面体的概念 3.2.2 求多边形、多面体的容积和重心;高维情形 3.2.3 判点在形内形外形上;多面体的情形 3.3 打包裹与制造合金--凸包及其应用 3.3.1 凸包的普遍性和广泛应用性;凸的定义与优美性质 3.3.2 凸包的实现 3.3.3 凸包算法正确性与时间效率 3.3.4 应用举例 3.3.5 凸多边形的深入讨论 3.4 几种常用的特殊算法 3.4.1 蛋糕被切成几块?--离散化法 3.4.2 切蛋糕的周长和面积--扫除法 3.4.3 凸包与快速排序--分治法 3.4.4 凸包的又一种求法--增量法 3.4.5 专题--随机增量算法 参考文献 |
商品评论(0条)