vrmc / resources

An awesome list of resources and references for competitive programming in VJC!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Resources

An awesome list of resources and references for competitive programming in VJC!

Table of contents

Learning C++

How to start off well and make good progress.

It is recommended that you learn C++11. To start off, borrow this book: Stroustrup: The C++ Programming Language (4th Edition). It's a great book on C++11 by the creator himself.

For a good source of documentation, use C++ Reference and avoid other websites like cplusplus.com.

Learning Git

Those new to Github and version control may find this cheatsheet and the other materials on their training website helpful. Another solution is to learn Git from the bottom up.

Algorithms

For those new to algorithms, take a look at online courses. The Algorithms specialization on Coursera by Stanford university is highly recommended. (One of the authors (Wei En) have not tried out the new courses since the old course was split up into 4 courses, but believes that the quality should be consistent.)

An alternative course, of very high quality too, is Algorithms, Part I and Algorithms, Part II by Princeton University. However, this course is in Java and may not be very useful.

For an overview of the main topics covered which are relevant to competitive programming, take a look at this table. Double ticks indicates a very comprehensive analysis of the topic in the course, relative to the other course. The important topics for competitive programming are marked with an asterisk (* means you should know why it works in great detail).

Topic Stanford Princeton
Asymptotic notation (Big-O) ✓✓
Balanced Search Trees ✓✓
Binary Search*
Convex Hull x
Dynamic Programming (Knapsack)* x
Dynamic Programming (Sequence Alignment)* x
Dynamic Programming (Optimal Search Trees)* x
Graphs (Connectivity)*
Graphs (Minimum Cut Problem)*
Graphs (Representations)*
Graphs (Search)*
Graphs (Shortest-Path Problem)* ✓✓ ✓✓
Hash Tables x
Heaps
Minimum Spanning Tree* ✓✓
Priority Queues* x
Sorting (Mergesort)* X ✓✓
Sorting (Quicksort)* ✓✓
Stacks and Queues x
Substring Search x
Symbol Tables x
Tries x
Union Find* x

Practices

Books

Some recommended books for competitive programming.

Name Description
★☆☆ Think Like a Programmer: An Introduction to Creative Problem Solving, by V. Anton Sprawl This book is a highly accessible text which uses C++ on problem solving, covering basic concepts such as classes, pointers, and recursion. One of the authors (Wayne) is using this to begin his journey.
★★☆ Competitive Programming, by Steven and Felix Halim This book contains a collection of relevant data structures, algorithms, and programming tips. It's a well-received book, although advanced. The first edition is free for download (pdf).
★★★ Introduction to Algorithms, by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein This immensely popular undergraduate textbook is both rigorous and comprehensive, and covers algorithms and data structures in huge detail. The writing can be difficult to those just starting out. We've made it available for download here.

Competitions

Name Description

About

An awesome list of resources and references for competitive programming in VJC!


Languages

Language:C++ 93.9%Language:Python 6.1%