acm programming contests coordinator: dr. hubert chan coach: zhichao zhao website:...

27
ACM Programming Contests ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

Upload: geoffrey-norris

Post on 25-Dec-2015

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

ACM Programming ContestsACM Programming Contests

Coordinator: Dr. Hubert ChanCoach: Zhichao Zhao

Website: i.cs.hku.hk/~provinci

Page 2: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

Contact InformationContact InformationCoordinator (grant raiser)

Dr. Hubert Chan

[email protected]

Office at CB429

Coach (consultant)

Zhichao Zhao

[email protected]

Office at CB LG101

Page 3: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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

Page 4: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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

Page 5: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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!

Page 6: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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!

Page 7: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

The ContestThe Contest

while ( ! isTimeout() ) {read();think();program();//debug();submit();

}

Page 8: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

Tips to win in acm-Tips to win in acm-icpcicpc

Page 9: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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?

Page 10: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

How to win in ACM-ICPCHow to win in ACM-ICPCWinning ACM-ICPC requires you

to be excellent in implementation and algorithms!

Page 11: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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.

Page 12: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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)

Page 13: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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

Page 14: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

POJ 1000 – A + B = ?POJ 1000 – A + B = ?

Page 15: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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

Page 16: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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

Page 17: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

Algorithmic skills (3/4)?Algorithmic skills (3/4)?3. Running time analysis

Page 18: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

Algorithmic skills (4/4)?Algorithmic skills (4/4)?

4. Observation and creativity◦ Find some properties about the

problem

Page 19: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

Example – Ancient Messages Example – Ancient Messages (WF11’)(WF11’)

Page 20: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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:

Page 21: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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

Page 22: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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)

Page 23: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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◦……

Page 24: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

Tips for Self-learningTips for Self-learningPractices make perfect!

Attend online contests frequently.

Discuss in our Facebook Fans Page◦To join, contact Zhichao ZHAO

Page 25: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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.

Page 26: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

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?…

Page 27: ACM Programming Contests Coordinator: Dr. Hubert Chan Coach: Zhichao Zhao Website: i.cs.hku.hk/~provinci

Thank you!Thank you!