• 算法竞赛入门经典—训练指南(算法艺术与信息学竞赛) 9787302291077
  • 算法竞赛入门经典—训练指南(算法艺术与信息学竞赛) 9787302291077
21年品牌 40万+商家 超1.5亿件商品

算法竞赛入门经典—训练指南(算法艺术与信息学竞赛) 9787302291077

正版现货,除尘消毒极速发货,7-9成新保存完好,多重检查,如有问题会及时留言告知(出版超过10年的书都可能有自然发黄现象哦)有特别要求可联系客服确认

6 1.1折 52.8 八五品

库存2件

广东东莞
认证卖家担保交易快速发货售后保障

作者刘汝佳

出版社清华大学出版社

ISBN9787302291077

出版时间2012-10

装帧平装

开本其他

定价52.8元

货号158946

上书时间2024-07-02

多多图书旗舰店

七年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:八五品
商品描述
商品简介
陈汝佳等编著的《算法竞赛入门经典(训练指南算法艺术与信息学竞赛)》是《算法竞赛入门经典》的重要补充,旨在补充原书中没有涉及或者讲解得不够详细的内容,从而构建一个较完整的知识体系,并且用大量有针对性的题目,让抽象复杂的算法和数学具体化、实用化。
《算法竞赛入门经典(训练指南算法艺术与信息学竞赛)》共6章,分别为算法设计基础、数学基础、实用数据结构、几何问题、图论算法与模型和更多算法专题,全书通过近200道例题深入浅出地介绍了上述领域的各个知识点、经典思维方式以及程序实现的常见方法和技巧,并在章末和附录中给出了丰富的分类习题,供读者查漏补缺和强化学习效果。
本书题目多选自近年来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思维的体操1
1.2问题求解常见策略15
1.3高效算法设计举例39
1.4动态规划专题60
1.5小结与习题77
第2章数学基础103
2.1基本计数方法103
2.2递推关系109
2.3数论119
2.3.1基本概念119
2.3.2模方程126
2.4组合游戏132
2.5概率与数学期望139
2.6置换及其应用144
2.7矩阵和线性方程组151
2.8数值方法简介163
2.9小结与习题170
第3章实用数据结构186
3.1基础数据结构回顾186
3.1.1抽象数据类型(ADT)186
3.1.2优先队列188
3.1.3并查集191
3.2区间信息的维护与查询194
3.2.1二叉索引树(树状数组)194
3.2.2RMQ问题197
3.2.3线段树(1):点修改199
3.2.4线段树(2):区间修改202
3.3字符串(1)208
3.3.1Trie208
3.3.2KMP算法211
3.3.3Aho-Corasick自动机214
3.4字符串(2)219
3.4.1后缀数组219
3.4.2*长公共前缀(LCP)222
3.4.3基于哈希值的LCP算法224
3.5排序二叉树227
3.5.1基本概念227
3.5.2用Treap实现名次树230
3.5.3用伸展树实现可分裂与合并的序列239
3.6小结与习题244
第4章几何问题254
4.1二维几何基础254
4.1.1基本运算255
4.1.2点和直线256
4.1.3多边形258
4.1.4例题选讲259
4.1.5二维几何小结263
4.2与圆和球有关的计算问题264
4.2.1圆的相关计算264
4.2.2球面相关问题269
4.3二维几何常用算法270
4.3.1点在多边形内判定270
4.3.2凸包271
4.3.3半平面交276
4.3.4平面区域282
4.4三维几何基础286
4.4.1三维点积287
4.4.2三维叉积288
4.4.3三维凸包290
4.4.4例题选讲292
4.4.5三维几何小结295
4.5小结与习题296
第5章图论算法与模型307
5.1基础题目选讲307
5.2深度优先遍历310
5.2.1无向图的割顶和桥312
5.2.2无向图的双连通分量314
5.2.3有向图的强连通分量319
5.2.42-SAT问题323
5.3*短路问题327
5.3.1再谈Dijkstra算法327
5.3.2再谈Bellman-Ford算法332
5.3.3例题选讲335
5.4生成树相关问题343
5.5二分图匹配347
5.5.1二分图*大匹配347
5.5.2二分图*佳**匹配348
5.5.3稳定婚姻问题352
5.5.4常见模型355
5.6网络流问题357
5.6.1*短增广路算法358
5.6.2*小费用*大流算法363
5.6.3建模与模型变换365
5.6.4例题选讲368
5.7小结与习题372
第6章*多算法专题383
6.1轮廓线动态规划383
6.2嵌套和分块数据结构389
6.3暴力法专题395
6.3.1路径寻找问题395
6.3.2对抗搜索400
6.3.3**覆盖问题和DLX算法406
6.4几何专题412
6.4.1仿射变换与矩阵412
6.4.2离散化和扫描法414
6.4.3运动规划423
6.5数学专题425
6.5.1小专题集锦425
6.5.2快速傅里叶变换(FFT)428
6.5.3线性规划430
6.6浅谈代码设计与静态查错431
6.6.1简单的Bash431
6.6.2《仙剑奇侠传四》之*后的战役440
6.7小结与习题447
附录A训练指南:使用UVa/LA题库481
A.1UVa在线比赛**481
A.2LA套题(ACM/ICPC真题)**482
A.3UVa在线比赛单题**483
附录BJava、C#和Python语言简介505
B.1Java505
B.2C#507
B.3Python509

主编推荐
作者授课资源:https://space.bilibili.com/208090093《算法竞赛入门经典》一书是刘汝佳老师的经典作品之一,自出版以来受到了广大读者的喜爱,近年来大家一直都在期盼着刘老师新作的诞生,可以说是望眼欲穿!3年的等待,现在终于可以迎接《算法竞赛入门经典训练指南》的到来了,欢迎大家来阅读本书!作为《算法竞赛入门经典》的重要补充,本书旨在补充原书中没有涉及或者讲解得不够详细的内容,从而构建一个较完整的知识体系,通过近200道例题深入浅出地介绍了上述领域的各个知识点、经典思维方式以及程序实现的常见方法和技巧。覆盖面广,点到为止,注重代码是本书的**特点,而这3个特点都是为了向业界靠拢而设定,注重广度而非深度。本书题目多选自近年来ACM/ICPC区域赛和总决赛真题,内容全面,盖了常见算法竞赛中的大多数细分知识点。书中还给出了所有重要的经典算法的完整程序,以及重要例题的核心代码,既适合选手自学,也方便教练组织学习和训练。

精彩内容
第4章几何问题几何问题是高水平算法竞赛中不可或缺的题型。由于背景知识多,内容杂乱,因此《算法竞赛入门经典》几乎没有涉及真正意义上的几何问题。本章通过介绍一些几何中的常见问题和算法,力图让读者具备一定的几何解题能力,并感受到几何的美。4.1二维几何基础图4-1简单地说,向量(vector)就是有大小和方向的量,如速度、位移等物理量都是向量。向量基本的运算是加法,满足平行四边形法则,如图4-1所示。在平面坐标系下,向量和点一样,也用两个数x、y表示。它等于向量的起点到终点的位移,也相当于把起点平移到坐标原点后,终点的坐标。尽管如此,请读者不要在概念上把点和向量弄混。比如,点-点=向量,向量向量=向量,点向量=点,而点点是没有意义的。在第6章中,我们会介绍齐次坐标的概念,从而在程序上区分开点和向量,但在本章中,点和向量都用两个数x、y表示。下面是它们的常用定义。structPoint{doublex,y;Point(doublex=0,doubley=0):x(x),y(y){}//构造函数,方便代码编写};typedefPointVector;//从程序实现上,Vector只是Point的别名//向量向量=向量,点向量=点Vectoroperator(VectorA,VectorB){returnVector(A.xB.x,A.yB.y);}//点-点=向量Vectoroperator-(PointA,PointB){returnVector(A.x-B.x,A.y-B.y);}//向量*数=向量Vectoroperator*(VectorA,doublep){returnVector(A.x*p,A.y*p);}//向量/数=向量Vectoroperator/(VectorA,doublep){returnVector(A.x/p,A.y/p);}booloperator(constPointa,constPointb){returna.xb.x||(a.x==b.xa.yb.y);}constdoubleeps=1e-10;intdcmp(doublex){if(fabs(x)eps)return0;elsereturnx0?-1:1;}booloperator==(constPointa,constPointb){returndcmp(a.x-b.x)==0dcmp(a.y-b.y)==0;}注意上面的相等函数用到了三态函数dcmp,减少了精度问题。另外,向量有一个所谓的极角,即从x轴正半轴旋转到该向量方向所需要的角度。C标准库里的atan2函数就是用来求极角的,如向量(x,y)的极角就是atan2(y,x)(单位:弧度)。4.1.1基本运算点积。两个向量v和w的点积等于二者长度的乘积再乘上它们夹角的余弦。如图4-2所示这里的是指从v到w逆时针旋转的角,因此当夹角大于90时点积为负。余弦是偶函数,因此点积满足交换率。如果两向量垂直,点积等于0。不难推导出:在平面坐标系下,两个向量OA和OB的点积等于xAxByAyB。下面是点积计算方法,以及利用点积计算向量长度和夹角的函数。doubleDot(VectorA,VectorB){returnA.x*B.xA.y*B.y;}doubleLength(VectorA){returnsqrt(Dot(A,A));}doubleAngle(VectorA,VectorB){returnacos(Dot(A,B)/Length(A)/Length(B));}叉积。简单地说,两个向量v和w的叉积等于v和w组成的三角形的有向面积的两倍。什么叫有向面积呢(见图4-3)?图4-2图4-3顺着个向量v看,如果w在左边,那么v和w的叉积大于0,否则小于0。如果两个向量共线(方向相同),那么叉积等于0(三角形退化成线段)。不难发现,叉积不满足交换率。事实上,cross(v,w)=-cross(w,v)。在坐标系下,两个向量OA和OB的叉积等于xAyB-xByA。代码如下。doubleCross(VectorA,VectorB){returnA.x*B.y-A.y*B.x;}doubleArea2(PointA,PointB,PointC){returnCross(B-A,C-A);}图4-4两个向量的位置关系。把叉积和点积组合到一起,我们可以更细致地判断两个向量的位置关系。如图4-4所示,括号里的个数是点积的符号,第二个数是叉积的符号,个向量v总是水平向右,另一个向量w的各种情况都包含在了图中。比如,当w的终点在下图左上方的第二象限时点积为负但叉积均为正,用(-,)表示。向量旋转。向量可以绕起点旋转,公式为x=xcosa-ysina,y=xsinaycosa。其中a为逆时针旋转的角。代码如下。//rad是弧度VectorRotate(VectorA,doublerad){returnVector(A.x*cos(rad)-A.y*sin(rad),A.x*sin(rad)A.y*cos(rad));}作为特殊情况,下面的函数计算向量的单位法线,即左转90以后把长度归一化。//调用前请确保A不是零向量VectorNormal(VectorA){doubleL=Length(A);returnVector(-A.y/L,A.x/L);}基于复数的几何计算。在本节结束前,笔者还想介绍另外一种实现点和向量的方法,即使用C里的复数。#includeusingnamespacestd;typedefcomplexPoint;typedefPointVector;这样定义之后,我们自动拥有了构造函数、加减法和数量积。用real(p)和imag(p)访问实部和虚部,conj(p)返回共轭复数,即conj(abi)=a-bi。相关函数如下。doubleDot(VectorA,VectorB){returnreal(conj(A)*B);}doubleCross(VectorA,VectorB){returnimag(conj(A)*B);}VectorRotate(VectorA,doublerad){returnA*exp(Point(0,rad));}上述函数的效率不是很高,但是相当方便、好记。

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP