You are on page 1of 17

Competition Programming

Tutorial
Dario Fischbein

Competition Programming Tutorial p. 1/17

What is it about?


Problem Solving

Programming




Team Work
Strategy

Training

Competition Programming Tutorial p. 2/17

Problem Types


Sorting

Arithmetic / Number theory / Combinatory

Recurrence relations and counting

Backtracking

Graph algorithms

Greedy

Dynamic programming

Computational geometry

Parsing
Competition Programming Tutorial p. 3/17

Graph Algorithms


Dijkstra

Floyd

BFS/DFS
Bellman-Ford
Kruskal (union find)
Prime
Ford-Fullkerson - Preflow-push






Competition Programming Tutorial p. 4/17

Strategy


How the ranking is done in ACM Contest




Easiest -> hardest


Do not debug, do review

Plan and re-plan de the schedule




Role of each one


Use of WA and TLE to get information

Add simple test cases

Log of your own errors

Use of the score board


The last hour

Competition Programming Tutorial p. 5/17

Strategy


How the ranking is done in ACM Contest




Easiest -> hardest


Do not debug, do review

Plan and re-plan de the schedule




Role of each one


Use of WA and TLE to get information

Add simple test cases

Log of your own errors

Use of the score board


The last hour

Competition Programming Tutorial p. 6/17

Useful Links


Valladolid Online Judge


 acm.uva.es/problemset/

International Collegiate Programming Contest


 icpc.baylor.edu/icpc/

TopCoder
 www.topcoder.com/tc/

The Algorithmist
 www.algorithmist.com/

Competition Programming Tutorial p. 7/17

Class Organization


15:00 - 15:15 Individual questions

15:15 - 16:30 Problem solving - mini contest

16:30 - 17:00 Problem discussion

Competition Programming Tutorial p. 8/17

Problem Set For 8/Feb




Minimal coverage (10020)

Shoemakers Problem (10026)


Divisibility (10036)

Competition Programming Tutorial p. 9/17

For the Week


Problems
 Camel trading (10700)


Constructing BST (10821)

Take the Land (10074)


Reading


Greedy Algorithms
 en.wikipedia.org/wiki/Greedy_algorithm

Dynamic programming
 en.wikipedia.org/wiki/Dynamic_programming
Competition Programming Tutorial p. 10/17

Problem Set For 15/Feb




Whats Cryptanalysis? (10008)

Simple calculations (10014)

Flip Sort (10327)

Competition Programming Tutorial p. 11/17

For the Week


Problems
 Euclids Game (10368)
 Twin Primes (10394)
 Flip-Flop the Squarelotron (10016)
Reading


Sorting
 www.algorithmist.com/index.php/Sorting
 www.sgi.com/tech/stl/sort.html (/stable_sort.html)

Euclidean algorithm
 en.wikipedia.org/wiki/Euclidean_algorithm

Competition Programming Tutorial p. 12/17

Problem Set For 22/Feb




Adventures in Moving - Part IV


(uva:10201)(pku:2465)

Pairsumonious Numbers
(uva:10202)(pku:2466)

Snow Clearing (uva:10203)(pku:2467)

Stack em Up (uva:10205)(pku:2469)

Competition Programming Tutorial p. 13/17

Problem Set For 8/Mar


New Judge: http://acm.pku.edu.cn/JudgeOnline/


Injured Queen Problem (uva:10401)

A Star not a Tree? (uva:10228) (pku:2420)

Arbitrage (uva:104) (pku:1238)

Competition Programming Tutorial p. 14/17

For the Week


Problems
 Longest Common Subsequence (uva:10405)


Folding My T-Shirt (uva:10416)

Reading


Longest increasing subsequence problem




en.wikipedia.org/wiki/Longest_increasing_subsequence_problem

Bellman-Fork algorithm
 en.wikipedia.org/wiki/Bellman-Ford_algorithm

Competition Programming Tutorial p. 15/17

Problem Set For 15/Mar


Problems to Solve
 Common Subsequence (pku:1458)


Freckles (uva:10034) (pku:2560)

Intersection (uva:191)(pku:1410)

Code to fix
 Injured Queen Problem (p10401 - to fix.cpp)


Flip Sort (p10327 - to fix.cpp)

Competition Programming Tutorial p. 16/17

For the Week


Reading


Eulerian path
 en.wikipedia.org/wiki/Eulerian_path

Competition Programming Tutorial p. 17/17

You might also like