Competitive Programming 2
Steven Andrew Halim, Felix Halim · 2012
There are many ways in which students can be prepared for programming contests and indeed training more generally in algorithms. Two of the more obvious areas are exposure to a wide variety of different algorithms and techniques, and practice by solving a good number of such problems. The former is important, not only at the initial levels where a student is introduced to the fundamental building blocks (e.g. dynamic programming or depth-first search) but at the progressive levels where a knowledge of more sophisticated methods gives a useful, if not essential, toolbox. Algorithmic programming contests have changed significantly since the 80s and, as this book mentions in passing, what were once the deciding problems are now basic requirements. The need for practice should be clear. Not only does it give the student the opportunity to confirm they understand the algorithms, it develops skills in finding appropriate algorithms, appreciating the different (test) cases an algorithm needs to solve, seeing ways in which multiple algorithms and data-structures can be combined and, from a purely contest perspective, helps in increasing a student’s speed and accuracy. Competitive Programming 2 is an excellent resource for both exposure and practice. It is the second edition (the first edition is just Competitive Programming) of this book, which grew originally from a similarly titled course that has been taught at the National University of Singapore since 2009. Its page count puts it at over 70% larger than the first edition. Readers of that edition, considering whether to also buy that edition can find a detailed comparison of the two editions (and the planned third edition) at the authors website [1]. The book is available in both A4 and A5 formats and an electronic version should be available by the time you read this. The A4 copy was review and worked well