acm programming contests coordinator: dr. hubert chan coach: zhichao zhao website:...
TRANSCRIPT
ACM Programming ContestsACM Programming Contests
Coordinator: Dr. Hubert ChanCoach: Zhichao Zhao
Website: i.cs.hku.hk/~provinci
Contact InformationContact InformationCoordinator (grant raiser)
Dr. Hubert Chan
Office at CB429
Coach (consultant)
Zhichao Zhao
Office at CB LG101
ACM International Collegiate Programming Contest (a.k.a. ACM ICPC, ACM competition, ICPC) is the largest university-level programming contest in the world.
http://icpc.baylor.edu
Statistics in 2012 ◦ # of students: 29,479
◦ # of universities: 2,322
◦ # of countries: 91
◦ # of continents: 6
What is ACM-ICPCWhat is ACM-ICPC
ACM-ICPC is comprised of several levels:
◦ Hong Kong Local Contest
◦ Asia Regional Contest
Earn ticket to World Finals
◦ World Finals 100+ teams
What is ACM-ICPCWhat is ACM-ICPC
Why ACM-ICPCWhy ACM-ICPCYou can learn…
◦Many useful algorithms, mathematical insights
◦How to code/debug quickly and accurately◦How to work in a team
Then you can rock in classes, job interviews, etc.
It’s also fun!
Contest RuleContest Rule Each team: 3 students One computer per team
4 - 5 hours 8 - 13 problems to solve
◦ Presented in a real-life scenario
◦ Need to discern the underlying essential problem and develop algorithms
◦ Input and output requirement
◦ Time limit
Judge by some test cases (unknown to us)◦ Pass all test cases = solve the question
◦ If you fail, you can resubmit
Winner is the team that solves the most problems in the least time!
The ContestThe Contest
while ( ! isTimeout() ) {read();think();program();//debug();submit();
}
Tips to win in acm-Tips to win in acm-icpcicpc
Four levels of programmerFour levels of programmer
1. Implementation◦ know the language well, translate idea to
programs
2. Algorithms◦ Design good solutions
3. Software engineering◦ manage different components and
people
4. World◦ How can I change the
world?
How to win in ACM-ICPCHow to win in ACM-ICPCWinning ACM-ICPC requires you
to be excellent in implementation and algorithms!
How to win in ACM-ICPCHow to win in ACM-ICPCBe excellent in implementation and
algorithms.
For implementation, you need practice.
For algorithms, you need to be creative and logical.
What kind of implementation skills What kind of implementation skills are needed?are needed?
Variables, loops, functionsExhaustion
◦Try all permutations◦Try all subsets◦Try all paths, etc
Classes, operator overloading, STL
Persistence (don't be afraid of long problems and programs)
How to improve How to improve implementation?implementation?Write more programsRead more booksDon't afraid of new tools
◦ STL
Exercises. Codeforces: 48A, 242A, 75B, 81B, 82B, 9CPOJ: 1000, 1001, 1002, 1004, 1005, 1006,
1007, 1008, 1010, 1012, 1016, 1019
POJ 1000 – A + B = ?POJ 1000 – A + B = ?
Algorithmic skills (1/4)?Algorithmic skills (1/4)?
1. Standard algorithm design principles◦ Divide-and-conquer◦ Dynamic programming
Save up the partial results The optimal solution can be found by backtracking
◦ Greedy Sometimes the seemingly best choice is the only
best choice
These are principles that we don't need to memorize
Algorithmic skills (2/4)?Algorithmic skills (2/4)?2. Common algorithms
◦ Algorithms that have been studied before.◦ Memorize the algorithms (or at least their usage)◦ Sorting, graphs, network flow, coordinate
geometry, math Be hardworking, read more books
Algorithmic skills (3/4)?Algorithmic skills (3/4)?3. Running time analysis
Algorithmic skills (4/4)?Algorithmic skills (4/4)?
4. Observation and creativity◦ Find some properties about the
problem
Example – Ancient Messages Example – Ancient Messages (WF11’)(WF11’)
Example – Ancient MessagesExample – Ancient Messages
1 3 5 4 0 2
# of holes per shape:
2 4 6 5 1 3
# of adjacent white regions per shape:
Example – Ancient MessagesExample – Ancient Messages
Solution Framework:◦ Step 1 - Figure our all
black regions◦ Step 2 - For each black
region, count number of adjacent white regions
Flood Fill Algorithm to find regions
Recursions to implement
Tips for Self-learningTips for Self-learningBe self-motivated, passionate, and
persistent. Try to do an many exercises as possible.
Form a team or a study group ASAP so that you can learn with others.
Make full use of online materials (http://i.cs.hku.hk/~provinci/utilities.html)◦ E-books◦ Online Tutorials (recommend Stanford
course homepage)◦ Recommended Online Judges:
Codeforces (www.codeforces.com) Peking University Online Judges(poj.org)
Tips for Self-learningTips for Self-learningAttend online contests
◦CodeForces Regular Round Contests: http://www.codeforces.com/contests
◦Topcoder Single Round Matches: http://community.topcoder.com/tc
◦Monthly Contests in Online Judges e.g. ZOJ Monthly Contests:
http://acm.zju.edu.cn
◦Google Code Jam◦Facebook Hacker Cup◦……
Tips for Self-learningTips for Self-learningPractices make perfect!
Attend online contests frequently.
Discuss in our Facebook Fans Page◦To join, contact Zhichao ZHAO
For interested students.Please briefly introduce your self.I would like to discuss with you
about training.Tell me what you need regarding
training and I will try to help.
Self-introductionSelf-introductionNameCome from …Major in …Year … studentBeginner? Need teammates? Any
previous programming experience?Senior member? Anything want to
share? Any help you can provide?…
Thank you!Thank you!