Details for this torrent 

Laaksonen A. Guide to Competitive Programming...3ed 2024
Type:
Other > E-books
Files:
1
Size:
26.83 MiB (28134414 Bytes)
Uploaded:
2024-08-08 09:09 GMT
By:
andryold1
Seeders:
52
Leechers:
2

Info Hash:
5D638E84F34ACBFD1608616597425F961C8D2B87




Textbook in PDF format

This textbook features new material on advanced topics, such as calculating Fourier transforms, finding minimum cost flows in graphs, and using automata in string problems. Critically, the text accessibly describes and shows how competitive programming is a proven method of implementing and testing algorithms, as well as developing computational thinking and improving both programming and debugging skills. Competitive programming is still a popular and effective way to learn programming and problem solving. This third edition of the book has new chapters that discuss the use of Python in programming contests, how to prepare for the IOI contest, and the future of competitive programming.
Competitive programming has its roots in the scientific study of algorithms. However, while a computer scientist writes a proof to show that their algorithm works, a competitive programmer implements their algorithm and submits it to a contest system. Then, the algorithm is tested using a set of test cases, and if it passes all of them, it is accepted. This is an essential element in competitive programming, because it provides a way to automatically get strong evidence that an algorithm works. In fact, competitive programming has proved to be an excellent way to learn algorithms, because it encourages to design algorithms that really work, instead of sketching ideas that may work or not.
Another benefit of competitive programming is that contest problems require thinking. In particular, there are no spoilers in problem statements. This is actually a severe problem in many algorithms courses. You are given a nice problem to solve, but then the last sentence says, for example: “Hint: modify Dijkstra’s algorithm to solve the problem.” After reading this, there is not much thinking needed, because you already know how to solve the problem. This never happens in competitive programming. Instead, you have a full set of tools available, and you have to figure out yourself which of them to use.
Solving competitive programming problems also improves one’s programming and debugging skills. Typically, a solution is awarded points only if it correctly solves all test cases, so a successful competitive programmer has to be able to implement programs that do not have bugs. This is a valuable skill in software engineering, and it is not a coincidence that IT companies are interested in people who have a background in competitive programming.
It takes a long time to become a good competitive programmer, but it is also an opportunity to learn a lot. You can be sure that you will get a good general understanding of algorithms if you spend time reading the book, solving problems, and taking part in contests.
Topics and features:
Introduces dynamic programming and other fundamental algorithm design techniques, and investigates a wide selection of graph algorithms
Compatible with the IOI Syllabus, yet also covering more advanced topics, such as maximum flows, Nim theory, and suffix structures
Provides advice for students aiming for the IOI contest
Surveys specialized algorithms for trees, and discusses the mathematical topics that are relevant in competitive programming
Examines the use of the Python language in competitive programming
Discusses sorting algorithms and binary search, and examines a selection of data structures of the C++ standard library
Explores how GenAI will impact on the future of the field
Covers such advanced algorithm design topics as bit-parallelism and amortized analysis, and presents a focus on efficiently processing array range queries
Describes a selection of more advanced topics, including square-root algorithms and dynamic programming optimization
Fully updated, expanded and easy to follow, this core textbook/guide is an ideal reference for all students needing to learn algorithms and to practice for programming contests. Knowledge of programming basics is assumed, but previous background in algorithm design or programming contests is not necessary. With its breadth of topics, examples and references, the book is eminently suitable for both beginners and more experienced readers alike.
1 Introduction
2 Programming Techniques
3 Efficiency
4 Sorting and Searching
5 Data Structures
6 Dynamic Programming
7 Graph Algorithms
8 Algorithm Design Topics
9 Range Queries
10 Tree Algorithms
11 Mathematics
12 Advanced Graph Algorithms
13 Geometry
14 String Algorithms
15 Additional Topics
16 Python in Competitive Programming
17 Preparing for IOI
18 Future of Competitive Programming
Appendix: Mathematical Background