Welcome to Scribd. Sign in or start your free trial to enjoy unlimited e-books, audiobooks & documents.Find out more
Download
Standard view
Full view
of .
Look up keyword
Like this
11Activity
0 of .
Results for:
No results containing your search query
P. 1
Competitive Programming 2

Competitive Programming 2

Ratings:

5.0

(1)
|Views: 8,843|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

04/29/2015

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 (11)

You've already reviewed this. Edit your review.
Rahul Khairwar liked this
Gopal Sharma liked this
Shobhit Gupta liked this
tuxntux liked this
Manoj Pandey liked this
Kien Trung liked this
1 thousand reads
theshubhamgol liked this
1 hundred reads

You're Reading a Free Preview

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