Useful knowledge
- Basic data structures: stacks, queues, arrays, and lists.
- Basic algorithms: sorting and searching.
- Binary trees.
- Brute-force search.
- Backtracking search.
- Generating all permutations or combinations of a set.
- Recursion.
- Dynamic programming.
- Graphs and their algorithms, including breadth-first search, depth-first search, minimum spanning trees, shortest paths, topological sort, and transitive closure.
- Basic parsing techniques such as recursive descent, operator precedence, or infix-to-postfix conversion.
Useful Java Classes
- String, StringBuffer classes from java.lang.
- The wrapper classes Boolean, Character, Double, and Integer.
- The java.util Java Collection Framework classes.
- The java.util classes Scanner, StringTokenizer.
- The java.util.regex classes Matcher and Pattern.
- The java.math class BigInteger.
- The Comparable and Comparator interfaces.
- The Math class.
Useful resources:
- ACM Website
- BOOK: Art of Programming Contest
- Online Judge with Problem Repository