ICS 491: Competitive Programming: Prof. Nodari Sitchinava
ICS 491: Competitive Programming: Prof. Nodari Sitchinava
Lecture 1: Introduction
Goal:
Learn to solve computational problems quickly and efficiently
Goal:
Learn to solve computational problems quickly and efficiently
Why bother?
Improve problem solving skills
Prepare for ICPC programming competition
Technical skill of a Computer Science major
2015
2017
Prerequisites:
‘B’ or better in ICS 311
Fluency in Java, C or C++
Prerequisites:
‘B’ or better in ICS 311
Fluency in Java, C or C++
Recommended Reading:
Steven Halim and Felix Halim: Competitive Programming 3, 3rd
Edition, Lulu Press, 2014. [CP3]
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and
Clifford Stein, Introduction to Algorithms, 3rd Edition, The MIT
Press, 2009 [CLRS]
Grading:
70%: Weekly mini-contests (75 min)
15%: Midterm contest (150 min)
15%: Final contest (120 min)
Grading:
70%: Weekly mini-contests (75 min)
15%: Midterm contest (150 min)
15%: Final contest (120 min)
Grading:
70%: Weekly mini-contests (75 min)
15%: Midterm contest (150 min)
15%: Final contest (120 min)
No internet access!
Bad:
Presentation Error (PE)
Wrong Answer (WA)
Time Limit Exceeded (TLE)
Memory Limit Exceeded (MLE)
Runtime Error (RTE)
Compiling:
C:
gcc -g -O2 -std=gnu11 -static ${files} -lm
C++:
g++ -g -O2 -std=gnu++14 -static ${files}
Java:
javac -encoding UTF-8 -sourcepath . -d . ${files}
Running Java:
java -Dfile.encoding=UTF-8 -XX:+UseSerialGC -Xss64m
-Xms1920m -Xmx1920m ${file}
W r ongAnswer (WA)!
W r ongAnswer (WA)!
Analysis
Analysis
O(|s|2 ) substrings
O(|s|) time to check if a palindrom
O(|s|3 ) time
s3 = 1M ⇒ < 1second
Analysis:
A single scan: O(|s|)