Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
6Activity
0 of .
Results for:
No results containing your search query
P. 1
Competitive Programming 2

Competitive Programming 2

Ratings:

5.0

(1)
|Views: 3,715|Likes:
Published by Matias Reyes Mora

More info:

Published by: Matias Reyes Mora on Jul 22, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/15/2014

pdf

text

original

 
Contents
Foreword vPreface viAuthorsProles and Copyright xiConvention and Problem Categorization xiiList of Abbreviations xiiiList of Tables xivList of Figures xv1 Introduction 1
1.1 Competitive Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Tips to be Competitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2.1 Tip 2: Quickly Identify Problem Types . . . . . . . . . . . . . . . . . . . . . 41.2.2 Tip 3: Do Algorithm Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2.3 Tip 4: Master Programming Languages . . . . . . . . . . . . . . . . . . . . . 81.2.4 Tip 5: Master the Art of Testing Code . . . . . . . . . . . . . . . . . . . . . . 101.2.5 Tip 6: Practice and More Practice . . . . . . . . . . . . . . . . . . . . . . . . 121.2.6 Tip 7: Team Work (ICPC Only) . . . . . . . . . . . . . . . . . . . . . . . . . 121.3 Getting Started: The Ad Hoc Problems . . . . . . . . . . . . . . . . . . . . . . . . . 131.4 Chapter Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2 Data Structures and Libraries 21
2.1 Overview and Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.2 Data Structures with Built-in Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . 222.2.1 Linear Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.2.2 Non-Linear Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.3 Data Structures with Our-Own Libraries . . . . . . . . . . . . . . . . . . . . . . . . . 292.3.1 Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.3.2 Union-Find Disjoint Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.3.3 Segment Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.3.4 Fenwick Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.4 Chapter Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3 Problem Solving Paradigms 39
3.1 Overview and Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.2 Complete Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.2.1 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.2.2 Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.3 Divide and Conquer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47i
 
CONTENTS 
c
Steven & Felix3.3.1 Interesting Usages of Binary Search . . . . . . . . . . . . . . . . . . . . . . . 473.4 Greedy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.4.1 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.5 Dynamic Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.5.1 DP Illustration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.5.2 Classical Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.5.3 Non Classical Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663.6 Chapter Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4 Graph 71
4.1 Overview and Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714.2 Graph Traversal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714.2.1 Depth First Search (DFS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714.2.2 Breadth First Search (BFS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724.2.3 Finding Connected Components (in an Undirected Graph) . . . . . . . . . . 734.2.4 Flood Fill - Labeling/Coloring the Connected Components . . . . . . . . . . 744.2.5 Topological Sort (of a Directed Acyclic Graph) . . . . . . . . . . . . . . . . . 754.2.6 Bipartite Graph Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764.2.7 Graph Edges Property Check via DFS Spanning Tree . . . . . . . . . . . . . 764.2.8 Finding Articulation Points and Bridges (in an Undirected Graph) . . . . . . 774.2.9 Finding Strongly Connected Components (in a Directed Graph) . . . . . . . 804.3 Minimum Spanning Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844.3.1 Overview and Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844.3.2 Kruskals Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844.3.3 Prims Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854.3.4 Other Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864.4 Single-Source Shortest Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904.4.1 Overview and Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904.4.2 SSSP on Unweighted Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904.4.3 SSSP on Weighted Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914.4.4 SSSP on Graph with Negative Weight Cycle . . . . . . . . . . . . . . . . . . . 934.5 All-Pairs Shortest Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964.5.1 Overview and Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964.5.2 Explanation of Floyd Warshall’s DP Solution . . . . . . . . . . . . . . . . . . 964.5.3 Other Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984.6 Maximum Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.6.1 Overview and Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.6.2 Ford Fulkersons Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.6.3 Edmonds Karps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024.6.4 Other Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044.7 Special Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1074.7.1 Directed Acyclic Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1074.7.2 Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124.7.3 Eulerian Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1134.7.4 Bipartite Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144.8 Chapter Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5 Mathematics 121
5.1 Overview and Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215.2 Ad Hoc Mathematics Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215.3 Java BigInteger Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1255.3.1 Basic Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1255.3.2 Bonus Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126ii
 
CONTENTS 
c
Steven & Felix5.4 Combinatorics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1295.4.1 Fibonacci Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1295.4.2 Binomial Coecients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1305.4.3 Catalan Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315.4.4 Other Combinatorics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315.5 Number Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1335.5.1 Prime Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1335.5.2 Greatest Common Divisor (GCD) & Least Common Multiple (LCM) . . . . 1355.5.3 Factorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1365.5.4 Finding Prime Factors with Optimized Trial Divisions . . . . . . . . . . . . . 1365.5.5 Working with Prime Factors . . . . . . . . . . . . . . . . . . . . . . . . . . . 1375.5.6 Functions Involving Prime Factors . . . . . . . . . . . . . . . . . . . . . . . . 1385.5.7 Modulo Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1405.5.8 Extended Euclid: Solving Linear Diophantine Equation . . . . . . . . . . . . 1415.5.9 Other Number Theoretic Problems . . . . . . . . . . . . . . . . . . . . . . . . 1425.6 Probability Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1425.7 Cycle-Finding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1435.7.1 Solution using Efficient Data Structure . . . . . . . . . . . . . . . . . . . . . . 1435.7.2 Floyd’s Cycle-Finding Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . 1435.8 Game Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1455.8.1 Decision Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1455.8.2 Mathematical Insights to Speed-up the Solution . . . . . . . . . . . . . . . . 1465.8.3 Nim Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1465.9 Powers of a (Square) Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1475.9.1 The Idea of Ecient Exponentiation . . . . . . . . . . . . . . . . . . . . . . . 1475.9.2 Square Matrix Exponentiation . . . . . . . . . . . . . . . . . . . . . . . . . . 1485.10 Chapter Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
6 String Processing 151
6.1 Overview and Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1516.2 Basic String Processing Skills . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1516.3 Ad Hoc String Processing Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . 1536.4 String Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1566.4.1 Library Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1566.4.2 Knuth-Morris-Pratt (KMP) Algorithm . . . . . . . . . . . . . . . . . . . . . . 1566.4.3 String Matching in a 2D Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . 1586.5 String Processing with Dynamic Programming . . . . . . . . . . . . . . . . . . . . . 1606.5.1 String Alignment (Edit Distance) . . . . . . . . . . . . . . . . . . . . . . . . . 1606.5.2 Longest Common Subsequence . . . . . . . . . . . . . . . . . . . . . . . . . . 1616.5.3 Palindrome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1626.6 Sux Trie/Tree/Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1636.6.1 Sux Trie and Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1636.6.2 Sux Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1636.6.3 Applications of Sux Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1646.6.4 Sux Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1666.6.5 Applications of Sux Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1706.7 Chapter Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
7 (Computational) Geometry 175
7.1 Overview and Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1757.2 Basic Geometry Objects with Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . 1767.2.1 0D Objects: Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1767.2.2 1D Objects: Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177iii

Activity (6)

You've already reviewed this. Edit your review.
Manoj Pandey liked this
Kien Trung liked this
1 thousand reads
theshubhamgol liked this
1 hundred reads

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->