Guide to Competitive Programming: Learning and Improving Algorithms Through Contests (Paperback)

Antti Laaksonen

買這商品的人也買了...

商品描述

This invaluable textbook presents a comprehensive introduction to modern competitive programming. The text highlights how competitive programming has proven to be an excellent way to learn algorithms, by encouraging the design of algorithms that actually work, stimulating the improvement of programming and debugging skills, and reinforcing the type of thinking required to solve problems in a competitive setting. The book contains many “folklore” algorithm design tricks that are known by experienced competitive programmers, yet which have previously only been formally discussed in online forums and blog posts.

 

Topics and features: reviews the features of the C++ programming language, and describes how to create efficient algorithms that can quickly process large data sets; discusses sorting algorithms and binary search, and examines a selection of data structures of the C++ standard library; introduces the algorithm design technique of dynamic programming, and investigates elementary graph algorithms; covers such advanced algorithm design topics as bit-parallelism and amortized analysis, and presents a focus on efficiently processing array range queries; surveys specialized algorithms for trees, and discusses the mathematical topics that are relevant in competitive programming; examines advanced graph techniques, geometric algorithms, and string techniques; describes a selection of more advanced topics, including square root algorithms and dynamic programming optimization.

 

 

 

This easy-to-follow guide is an ideal reference for all students wishing to learn algorithms, and practice for programming contests. Knowledge of the basics of programming is assumed, but previous background in algorithm design or programming contests is not necessary. Due to the broad range of topics covered at various levels of difficulty, this book is suitable for both beginners and more experienced readers.

 

 

商品描述(中文翻譯)

這本寶貴的教科書提供了對現代競賽程式設計的全面介紹。本書強調競賽程式設計已被證明是學習演算法的優秀方式,透過鼓勵設計實際可行的演算法,促進程式設計和除錯技巧的提升,並強化在競爭環境中解決問題所需的思考方式。本書包含許多經驗豐富的競賽程式設計師所熟知的「傳統」演算法設計技巧,然而這些技巧以前只在線上論壇和部落格文章中被正式討論過。

本書的主題和特點包括:回顧C++程式語言的特點,並描述如何創建能夠快速處理大型數據集的高效演算法;討論排序演算法和二分搜尋,並檢視C++標準庫中的一些資料結構;介紹動態規劃演算法設計技巧,並探討基本的圖形演算法;涵蓋位元並行和攤銷分析等高級演算法設計主題,並著重於高效處理陣列範圍查詢;總結了樹狀結構的專用演算法,並討論了在競賽程式設計中相關的數學主題;探討了高級圖形技巧、幾何演算法和字串技巧;描述了一些更高級的主題,包括平方根演算法和動態規劃優化。

這本易於理解的指南是所有希望學習演算法並為程式設計競賽做準備的學生的理想參考書。假設讀者具備基本的程式設計知識,但不需要有演算法設計或程式設計競賽的背景。由於本書涵蓋了各種難度水平的廣泛主題,因此適合初學者和有經驗的讀者。