Create README.md

This commit is contained in:
Salil03 2018-12-14 11:54:18 +05:30 committed by GitHub
parent 35e7f96cc6
commit bcea4ea706
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 98 additions and 0 deletions

98
README.md Normal file
View File

@ -0,0 +1,98 @@
# Competitive Programmer's Handbook
The purpose of this book is to give you a thorough introduction to competitive programming. It is assumed that you already know the basics of programming, but no previous background in competitive programming is needed.
The book is especially intended for students who want to learn algorithms and possibly participate in the International Olympiad in Informatics (IOI) or in the International Collegiate Programming Contest (ICPC). Of course, the book is also suitable for anybody else interested 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.
The book is under continuous development. You can always send feedback on the book to ahslaaks@cs.helsinki.fi.
Webpage of the book: https://cses.fi/book/
[Download the book](https://cses.fi/book/book.pdf) (PDF)
## Other Versions of the Book
![alt text](https://cses.fi/book/gtcp.jpg)
_Guide to Competitive Programming_ is a printed book published by Springer. It is based on _Competitive Programmer's Handbook_, but also discusses more advanced topics such as suffix arrays, treaps, dynamic programming optimization, and parallel binary search. You can buy the book, for example, through [Springer](http://www.springer.com/us/book/9783319725468) or [Amazon](https://www.amazon.com/Guide-Competitive-Programming-Algorithms-Undergraduate/dp/3319725467)
___________________
![alt text](https://cses.fi/book/dmkbook.jpg)
_Олимпиадное программирование_ (_Olympiad Programming_) is a Russian version of _Guide to Competitive Programming_, published by DMK Press. More information about the book is available on their [website](https://dmkpress.com/catalog/computer/programming/978-5-97060-644-5/).
## Table of contents
### Part 1: Basic techniques
1. **Introduction**
2. **Time complexity**
3. **Sorting**
4. **Data structures**
5. **Complete search**
6. **Greedy algorithms**
7. **Dynamic programming**
8. **Amortized analysis**
9. **Range queries**
10. **Bit manipulation**
### Part 2: Graph algorithms
1. **Basics of graphs**
2. **Graph traversal**
3. **Shortest paths**
4. **Tree algorithms**
5. **Spanning trees**
6. **Directed graphs**
7. **Strong connectivity**
8. **Tree queries**
9. **Paths and circuits**
10. **Flows and cuts**
### Part 3: Advanced topics
1. **Number theory**
2. **Combinatorics**
3. **Matrices**
4. **Probability**
5. **Game theory**
6. **String algorithms**
7. **Square root algorithms**
8. **Segment trees revisited**
9. **Geometry**
10. **Sweep line algorithms**
**Do you want to practice the topics discussed in the books?** The [CSES Problem Set](https://cses.fi/problemset/) provides a collection of practice problems, ranging from easy to difficult.
## To-do
- [ ] Add exercises at the end of a chapter from sources other than [CSES Problem Set](https://cses.fi/problemset/)
- [ ] Change the loops in graph algorithms to memset
- [ ] The analysis of nim and examples could be improved
## Other Contests and resources
- ### IOI
The International Olympiad in Informatics (IOI) is an annual programming contest for secondary school students. Each country is allowed to send a team of four students to the contest. There are usually about 300 participants from 80 countries.
The [IOI syllabus](https://people.ksp.sk/~misof/ioi-syllabus/ioi-syllabus.pdf) regulates the topics that may appear in IOI tasks. Almost all the topics in the IOI syllabus are covered by this book.
- ### ICPC
The International Collegiate Programming Contest (ICPC) is an annual programming contest for university students. Each team in the contest consists of three students, and unlike in the IOI, the students work together; there is only one computer available for each team.
The topics that may appear at the ICPC are not so well specified as those at the IOI. In any case, it is clear that more knowledge is needed at the ICPC, especially more mathematical skills.
- ### Online contests
There are also many online contests that are open for everybody. At the moment, the most active contest site is Codeforces, which organizes contests about weekly. In Codeforces, participants are divided into two divisions: beginners compete in Div2 and more experienced programmers in Div1. Other contest sites include AtCoder, CS Academy, HackerRank and Topcoder.
There are already some books (besides this book) that focus on competitive programming and algorithmic problem solving:
- ### Books
- S. S. Skiena and M. A. Revilla: *Programming Challenges: The Programming Contest Training Manual*
- S. Halim and F. Halim: *Competitive Programming 3: The New Lower Bound of Programming Contests*
- K. Diks et al.: *Looking for a Challenge? The Ultimate Problem Set from the University of Warsaw Programming Competitions*
- T. H. Cormen, C. E. Leiserson, R. L. Rivest and C. Stein: *Introduction to Algorithms*
- J. Kleinberg and É. Tardos: *Algorithm Design*
- S. S. Skiena: *The Algorithm Design Manual*