新書推薦:
《
古典的回響:溪客舊廬藏明清文人繪畫
》
售價:NT$
1990.0
《
掌故家的心事
》
售價:NT$
390.0
《
孤独传:一种现代情感的历史
》
售價:NT$
390.0
《
家、金钱和孩子
》
售價:NT$
295.0
《
量价关系——透视股票涨跌脉络
》
售價:NT$
340.0
《
二十四节气生活美学
》
售價:NT$
340.0
《
西班牙内战:秩序崩溃与激荡的世界格局:1936-1939
》
售價:NT$
990.0
《
基于鲲鹏的分布式图分析算法实战
》
售價:NT$
495.0
|
編輯推薦: |
本书以面对纷呈复杂问题时如何理清数据关系,选择适宜高效的数据结构和解题方法为主线,分别阐述线性表、树、图的解题策略,全书共16章。每章以相关的数据结构、高级数据结构的知识体系为大纲,以基于程序设计竞赛试题的解题实验为核心单元,以期通过案例化的学习,系统、全面地提高读者编程解决问题的能力。本书既可以作为ACM-ICPC、IOI等各类程序设计竞赛的训练教程,又可以作为大学本科、研究生的教材,也可以作为IT研发人员提高编程能力的辅导教材。
|
內容簡介: |
本书以面对纷呈复杂问题时如何理清数据关系,选择适宜高效的数据结构和解题方法为主线,分别阐述线性表、树、图的解题策略,全书共16章。每章以相关的数据结构、高级数据结构的知识体系为大纲,以基于程序设计竞赛试题的解题实验为核心单元,以期通过案例化的学习,系统、全面地提高读者编程解决问题的能力。本书既可以作为ACM-ICPC、IOI等各类程序设计竞赛的训练教程,又可以作为大学本科、研究生的教材,也可以作为IT研发人员提高编程能力的辅导教材。
|
目錄:
|
目 录
前言
第一篇 线性表的解题策略
第1章 利用快速幂提高幂运算效率 2
1.1 快速幂取模 2
1.1.1 快速幂取模的概念 2
1.1.2 快速幂取模的应用 4
1.2 矩阵快速幂 10
1.2.1 矩阵快速幂的概念 10
1.2.2 矩阵快速幂的应用 14
第2章 高斯消元法 22
2.1 高斯消元法求解线性方程组 22
2.2 高斯消元法求解模线性方程组 30
2.3 高斯消元法求解异或方程组 38
2.4 高斯消元求矩阵的秩 49
第3章 单调栈和单调队列 52
3.1 单调栈 52
3.2 二维空间中应用单调栈 61
3.3 单调队列 65
3.4 单调队列优化DP 69
3.5 单调队列优化DP之多重背包问题 78
第一篇小结 83
第二篇 树的解题策略
第4章 利用划分树查找有序数 86
4.1 离线构建整个查询区间的划分树 87
4.2 在划分树上查找子区间[l, r]中
按序排列的第k个值 88
4.3 利用划分树解题 88
第5章 利用线段树解决区间计算问题 97
5.1 线段树的基本概念和基本操作 97
5.2 线段树动态维护:单点更新 101
5.3 线段树动态维护:子区间更新和
懒惰标记 106
5.4 线段树动态维护:子区间合并 112
5.5 权值线段树 120
5.6 主席树 125
第6章 最小生成树的拓展 129
6.1 最小生成树的应用 129
6.2 最优比率生成树 143
6.3 最小k度限制生成树 148
6.4 次小生成树 154
第7章 利用改进型的二叉搜索树优化
动态集合的操作 171
7.1 伸展树 171
7.2 红黑树 198
第8章 利用左偏树实现优先队列的合并 212
8.1 左偏树的基本概念 212
8.2 利用左偏树解题 216
第9章 利用动态树维护森林的连通性 230
9.1 树链剖分 230
9.2 动态树 241
第10章 利用跳跃表替代树结构 260
10.1 跳跃表的基本概念 260
10.2 利用跳跃表解题 265
第二篇小结 279
第三篇 图的解题策略
第11章 网络流算法 282
11.1 利用Dinic算法求解最大流 282
11.2 求容量有上下界的网络流问题 298
11.2.1 求解无源汇且容量有上下界
的网络可行流问题 298
11.2.2 求解有源汇且容量有上下界
的网络最大流问题 307
11.2.3 求解有源汇且容量有上下界
的网络最小流问题 316
11.3 计算最小(最大)费用最大流 321
第12章 二分图匹配 329
12.1 匈牙利算法 329
12.2 稳定婚姻问题 344
12.3 KM算法 350
12.4 利用一一对应的匹配性质转化
问题的实验范例 358
第13章 平面图、图的着色与偏序关系 371
13.1 平面图 371
13.2 图的着色 380
13.3 黑白着色法判定二分图 383
13.4 偏序关系 395
第14章 分层图 407
14.1 体验“分层图”思想内涵 407
14.2 基于动态规划利用“分层图”
求解最短路径问题 417
14.3 利用“分层图”思想优化算法 425
第15章 可简单图化与图的计数 430
15.1 可简单图化 430
15.2 生成树计数 435
15.3 基于遍历的图的计数 446
15.4 基于组合分析的图的计数 451
第16章 挖掘和利用图的性质 460
16.1 挖掘和利用图的性质的方法 460
16.2 挖掘和利用图的性质的实验范例460
第三篇小结 468
|
內容試閱:
|
前 言
当前,随着社会信息化的迅猛发展,程序设计已经成为实现信息化社会的关键技术。为此,世界各国都从国家战略层面对编程教育给出对应措施和高额经费支持。2020年11月6日,我国公布了《关于政协十三届全国委员会第三次会议第3172 号(教育类297 号)提案答复的函》,针对全国政协委员提出的《关于稳步推动编程教育纳入我国基础教学体系,着力培养数字化人才的提案》予以回应:高度重视学生信息素养提升,已制定相关专门文件推动和规范编程教育发展,培养培训能够实施编程教育的相关师资,将包括编程教育在内的信息技术内容纳入中小学相关课程。
程序设计竞赛是“编程解决问题”的比赛,发展数十年来,累积了海量的试题。将这些试题用于教学和实验中,可以系统、全面地提高学生编程解决问题的能力。程序设计竞赛所覆盖的知识体系可以概括为1984年图灵奖得主尼克劳斯·沃思(Niklaus Wirth)提出的著名公式“算法+数据结构=程序”,这也是计算机学科知识体系的核心部分。然而,程序设计竞赛的算法和数据结构与传统的教学大纲相比,已经有了很大的拓展。
程序设计解题策略是在编程解题过程中,面对非标准、非模式化的问题时,采用高级数据结构优化传统算法,发挥创造性的思维进行解题,是对解题方法的综合性、智能性和个性化的认识。
笔者编写“大学程序设计课程与竞赛训练教材”系列,旨在将程序设计竞赛的训练和程序设计类课程的教学、实验相结合,系统、全面地提高学生通过编程解决问题的能力。一方面,该系列的《程序设计实践入门》《数据结构编程实验》《算法设计编程实验》,从知识体系的角度系统论述编程解决问题的方法,其知识体系不仅覆盖传统的程序设计语言、数据结构、算法的教学大纲,而且基于程序设计竞赛进行了很大的拓展;另一方面,我们从程序设计解题策略的角度,对该系列2015年版的《程序设计解题策略》进行全面改写,对该书的前半部分的改写形成了本书。
数据结构是在程序设计语言中存储和组织数据的方式,包含3种类型:线性表、树和图。本书共16章,以面对复杂问题时如何厘清数据关系,选择适宜高效的数据结构和解题方法为背景,分别阐述线性表、树、图的解题策略。每一章基于知识体系展开为若干节,在每一节中,以实验为基本单元:首先,阐述解题策略和算法原理,给出分析和证明,以及算法的时间复杂度;然后,给出相应的程序设计竞赛试题,包括试题来源和在线测试地址、试题解析,以及带详尽注释的解答程序。我们对大学程序设计竞赛、在线程序设计竞赛以及中学生信息学奥林匹克竞赛的各类试题进行了分析和整理,从中精选出125道试题作为数据结构解题策略的实验试题。
本书共分为三篇。第一篇“线性表的解题策略”由3章组成,内容包括利用快速幂提高幂运算效率、高斯消元法,以及单调栈和单调队列。第二篇“树的解题策略”由7章组成,内容包括利用划分树查找有序数、利用线段树解决区间计算问题、最小生成树的拓展、利用改进型的二叉搜索树优化动态集合的操作、利用左偏树实现优先队列的合并、利用动态树维护森林的连通性和利用跳跃表替代树结构。第三篇“图的解题策略”由6章组成,内容包括:网络流算法,二分图匹配,平面图、图的着色与偏序关系,分层图,可简单图化与图的计数,挖掘和利用图的性质。
本书注重编程能力的培养,“实践出真知”。对于本书的使用,建议基于编程解题的实验进行案例教学或案例学习:让同学们把自己置入程序设计竞赛试题的情境之中,通过思考、讨论和上机编程来学习和实践数据结构解题策略;而在线测试系统则是同学们磨炼编程能力的平台。
本书将提供所有试题的英文原版以及大部分试题的官方测试数据和解答程序。
本书可以作为大学本科、研究生的教材,也可以作为程序设计竞赛选手的训练指导教材,还可以作为IT研发人员提高编程能力的辅导教材。
感谢在5年前发起成立ICPC训练联盟的20所大学:东北大学、大连理工大学、大连海事大学、哈尔滨工程大学、东北师范大学、东北农业大学、山东大学、中国海洋大学、中国石油大学(华东)、中国石油大学(北京)、西北工业大学、西安电子科技大学、长安大学、西安交通大学、南开大学、广西大学、新疆大学、贵州大学、郑州大学、厦门大学。现在,ICPC训练联盟已经发展成为有全国300多家大学参加,并有南亚、东南亚的大学作为观察员的学术组织。ICPC训练联盟不仅为本书书稿,也为笔者的系列著作及其课程建设提供了一个实践的平台。本书中的内容曾在ICPC训练联盟2022冬令营和夏令营上讲授。
感谢-华为“智能基座”程序设计课程虚拟教研室(电子科技大学主持)、泉州信息工程学院、头歌教学研究中心组织ICPC训练联盟2022夏令营,使本书的书稿在实战中得到了改进。感谢华东交通大学的周娟教授,她在ICPC训练联盟2022冬令营和夏令营中担任主讲。
特别感谢这些年来和我们风雨同舟、并肩作战的海内外同仁,在大家的共同努力下,大学程序设计课程与竞赛训练教材的建设、相应课程的建设,以及跨校、跨区域的教学实验体系的建设得以逐步
|
|