Algorithm beginner's Guide

Source: Internet
Author: User

From the Internet, I can only worship this training program ,~

Stage 1: practice common classical algorithms. Each of the following algorithms is used for 10 to 20 times, while streamlining the code by myself,

Because it is too common, you don't have to think about it when writing. You can even set the program after you finish it in 10-15 minutes or even turn off the monitor.

Come out.

1. Transient (Floyd, dijstra, bellmanford)

2. minimal spanning tree (write a prim first, and kruscal should use and query the set, which is hard to write)

3. Large numbers (High Precision) addition, subtraction, multiplication, and Division

4. Binary Search. (the code can be less than five lines)

5. Perform cross multiplication, determine the intersection of line segments, and then write a convex hull.

6. BFs, DFS, and skilled hash tables (be familiar, flexible, and concise)

7. mathematical formulas include: Moving and Division (within two rows), line segment intersection, and multi-angle area.

8. There are many tips for calling the system qsort.

9. Conversion between any binary systems

 

Stage 2: Exercise is a bit more complex, but it is also commonly used.

For example:

1. Bipartite Graph Matching (Hungary), minimum path Overwrite

2. network flow, minimum charge flow.

3. Line Segment tree.

4. Check the set.

5. Familiar with various typical dynamic planning models: LCs, longest incrementing substrings, triangle partitioning, and memory DP

6. classification algorithms. Game tree and binary method.

7. The largest group and the largest independent set.

8. points are located within the polygon.

9. Differential constraint system.

10. Bidirectional breadth search, A * algorithm, minimum dissipation first.

 

 

Related Knowledge

 

Graph Theory

 

Path Problems

0/1 Edge Weight Shortest Path

BFS

Non-negative edge weight Shortest Path (Dijkstra)

Features that can be solved by Dijkstra

Negative Edge Weight Shortest Path

Bellman-Ford

Bellman-Ford's Yen-s Optimization

Differential constraint system

Floyd

Generalized path

Passing Closure

Extremely small and extremely large distance/extremely small distance

Euler path/tour

Ring Algorithm

Euler path/tour of a hybrid Graph

Hamilton path/tour

Hamilton path/tour construction of a special Graph

 

Tree Generation

Minimum Spanning Tree

The k-th generation tree

Optimal Ratio Spanning Tree

0/1 score Planning

Degree limit Spanning Tree

 

Connectivity problems

Powerful DFS Algorithm

Undirected graph connectivity

Cut Point

Edge Cutting

2-connected branch

Directed Graph connectivity

Strongly Connected Branch

2-Sat

Minimum vertex Base

 

Directed Acyclic Graph

Topological sorting

Relationship between Directed Acyclic graphs and Dynamic Planning

 

Bipartite Graph Matching

Conversion between general graph problems and bipartite graph Problems

Max matching

Minimum path overwrite of a Directed Graph

0/1 minimum coverage of the matrix

Complete match

Optimal Match

Stable marriage

 

Network Flow Problems

Simple Features of the network stream Model and Its Relationship with Linear Planning

Max flow least cut Theorem

Maximum Flow Problems

Maximum stream problems with Upper and Lower Bounds

Loop stream

Minimum fee maximum flow/maximum fee Maximum Flow

 

The nature and determination of a string chart

 

 

Combined mathematics

 

Frequently Used ideas for solving combined mathematical problems

Approximation

Recursive/Dynamic Planning

Probability Problem

PolyA Theorem

 

 

Computational ry/analytic ry

 

Core of computational ry: Cross Product/Area

Main Force of analytic ry: plural

 

Basic

Point

Line, Line Segment

Polygon

 

Convex Polygon/convex bag

Introduction of convex packet algorithm and volume wrapping method

 

Graham Scanning Method

The introduction of horizontal order and the patch of Collinearity convex hull

 

Perfect convex hull algorithm

 

Correlation Determination

Intersection of two straight lines

Intersection of Two Line Segments

Point determination within any Polygon

Determination of points in a convex polygon

 

Classic Problems

Minimum external circle

Minimum outer circle algorithm for approximation of O (N)

Point Set diameter

Rotate the card shell

Triangle division of polygon

 

 

Mathematics/Number Theory

 

Maximum common approx.

Euclid Algorithm

Extended Euclid Algorithm

Homogeneous Equation/binary one-time Indefinite Equation

Homogeneous equations

 

Linear Equations

Gaussian elimination method

Solving Linear Equations in mod 2

Exact Solution to equations of Integer Coefficient

 

Matrix

Calculation of the determinant

Rapid Calculation of recursive relationships using matrix multiplication

 

Score

Score tree

Continuous score Approximation

 

Number theory computing

Evaluate the number of N approx.

Phi (N)

Sum

Fast number theory Transformation

......

 

Prime Number Problem

Probability discriminant Algorithm

Probability factor decomposition

 

 

Data Structure

 

Organizational Structure

Binary heap

Left Tree

Item tree

Winner tree

Skip table

Style icon

Oblique heap

Reap

 

Statistics Structure

Tree Array

Virtual Binary Tree

Line Segment tree

Rectangular area and

Circular area and

 

Link Structure

Hash table

Query set

Application of path compression

 

Data Structure in STL

Vector

Deque

Set/Map

 

 

Dynamic Planning/memory-based search

 

Differences between dynamic planning and memory-based search in Thinking Modes

 

Questions about the oldest generation

Maximum Non-descent subsequence

Longest Common subsequence

Longest Common subsequence without descent

 

Dynamic Programming for A Class of NP problems

 

Tree-based Dynamic Planning

 

Backpack Problems

 

Dynamic Planning Optimization

Quadrilateral Inequality

Convex and concave functions

Status Design

Planning direction

 

 

Linear Programming

 

Common ideas

 

Binary least representation

 

String

 

KMP trie Structure

Suffix tree/suffix array LCA/rmq

Finite State Automation Theory

 

Sort

Select/bubble fast sort Heap Sort merge sort

Base sorting topological sorting Network

 

 

Intermediate:

I. Basic Algorithms:

(1) Application of C ++ standard template library (poj3096, poj3007)

(2) Training of complex simulation questions (poj3393, poj1472, poj3371, poj1027, poj2706)

Ii. Graph Algorithm:

(1) Establishment and Solution of a differential constraint system (poj1201, poj2983)

(2) Maximum Minimum fee stream (poj2516, poj2516, poj2195)

(3) connected component (poj2942)

(4) strongly connected branches and their shrinkage points (poj2186)

(5) cut edge and cut point of an image (poj3352)

(6) Minimum Cut model and network flow protocol (poj3308 ,)

Iii. data structure.

(1) Line Segment tree. (poj2528, poj2828, poj2777, poj2886, poj2750)

(2) Static Binary Search Tree (poj2482, poj2352)

(3) TREE tree group (poj1195, poj3321)

(4) rmq. (poj3264, poj3368)

(5) advanced applications of the query set. (poj1703, 2492)

(6) KMP algorithm. (poj1961, poj2406)

4. Search

(1) optimal pruning and feasible pruning

(2) Search Skills and optimization (poj3411, poj1724)

(3) memory-based search (poj3373, poj1691)

 

5. Dynamic Planning

(1) more complex dynamic planning (such as dynamic planning to solve special operator problems)

(Poj1191, poj1054, poj3280, poj2029, poj2948, poj1925, poj3034)

(2) Dynamic Planning of record status (poj3254, poj2411, poj1185)

(3) tree-based Dynamic Planning (poj2057, poj1947, poj2486, poj3140)

6. Mathematics

(1) combined mathematics:

1. Refresh principle.

2. Drawer principle.

3. Group replacement and polyA theorem (poj1286, poj2409, poj3270, poj1026 ).

4. Recurrence relationship and primary function.

 

(2) mathematics.

1. Gaussian elimination method (poj2947, poj1487, poj2065, poj1166, poj1222)

2. Probability Problem. (poj3071, poj3440)

3. GCD, Extended Euclidean (Chinese Remainder Theorem) (poj3101)

(3) calculation method.

1.0/1 score planning. (poj2976)

2. The three-way method is used to solve the extreme values of a single peak (single Valley.

3. Matrix Method (poj3150, poj3422, poj3070)

4. iterative approximation (poj3301)

(4) randomization algorithm (poj3318, poj2454)

(5) Miscellaneous questions.

(Poj1870, poj3296, poj3286, poj1095)

VII. computational geometry.

(1) Coordinate discretization.

(2) scanning line algorithm (for example, finding the area and perimeter of a rectangle and using it with a line segment tree or heap ).

(Poj1765, poj1177, poj1151, poj3277, poj2280, poj3004)

(3) polygon kernel (semi-plane intersection) (poj3130, poj3335)

(4) comprehensive application of geometric tools (poj1819, poj1066, poj2043, poj3227, poj2165, poj3429)

 

 

Advanced:

I. Basic algorithm requirements:

(1) the code can be quickly written in a concise but elegant style.

(Poj2525, poj1684, poj1421, poj1048, poj2050, poj3306)

(2) ensure correctness and efficiency. poj3434

Ii. Graph Algorithm:

(1) minimum generation tree and minimum K short circuit. (poj1639)

(2) theory of the maximum short circuit, Minimum Spanning Tree, bipartite graph, and maximum flow problem (mainly modeling and solving)

(Poj3155, poj2112, poj1966, poj3281, poj1087, poj2289, poj3216, poj2446

(3) optimal rate spanning tree (poj2728)

(4) minimum tree structure (poj1_4)

(5) generate small trees.

(6) Minimum ring of undirected graph and Directed Graph

Iii. data structure.

(1) trie graph creation and application (poj2778)

(2) The LCA and rmq problems (the recent common ancestor problems) include offline algorithms (parallel query set + DFS) and online algorithms.

(Rmq + DFS). (poj1330)

(3) Dual-end queue and Its Application (maintaining a monotonous queue, often in the dynamic planning from optimization status transfer

Purpose). (poj2823)

(4) left Tree (merged heap ).

(5) suffix tree (a very useful data structure is also a hot topic in the competition area ).

(Poj3415, poj3294)

4. Search

(1) troublesome search question training (poj1069, poj3322, poj1475, poj1924, poj2049, poj3426)

(2) wide search status optimization: using M-in-number Storage status, converting to string hash table Weight Determination, bit compression storage status, bidirectional wide search, A * algorithm. (poj1768, poj1184, poj1872, poj1324, poj2046, poj1482)

(3) Optimization of Deep Search: Bit operations should be used as much as possible, pruning must be required, as few function parameters as possible, and the number of layers is not too large. You can consider bidirectional search, rotation search, and IDA * algorithms. (poj3131, poj2870, poj2286)

5. Dynamic Planning

(1) dynamic planning that requires data structure optimization.

(Poj2754, poj3378, poj3017)

(2) quadrilateral inequality theory.

(3) difficult status dp (poj3133)

6. Mathematics

(1) combined mathematics.

1. Mobius Inversion (poj2888, poj2154)

2. Partial Order relationship theory.

(2) forum discussion.

1. Extremely small processes (poj3317, poj1085)

2. Nim problems.

VII. computational geometry.

(1) Semi-plane intersection (poj3384, poj2540)

(2) create a visual image (poj2966)

(3) Minimum circular coverage of a point set.

(4) vertex (poj2079)

8. Comprehensive questions.

(Poj3109, poj1478, poj1462, poj2729, poj2048, poj3336, poj3315, poj2148, poj1263)

 

Initial stage:

I. Basic Algorithms:

(1) enumeration. (poj1753, poj2965) (2) greedy (poj1328, poj2109, poj2586)

(3) recursion and divide and conquer. (4) recursion.

(5) constructor. (poj3295) (6) simulation method. (poj1068, poj2632, poj1573, poj2993, poj2996)

Ii. Graph Algorithm:

(1) depth first traversal and breadth first traversal.

(2) shortest path algorithm (Dijkstra, Bellman-Ford, Floyd, heap + Dijkstra)

(Poj1860, poj3259, poj1062, poj2253, poj1125, poj2240)

(3) Minimum Spanning Tree Algorithm (Prim, Kruskal)

(Poj1789, poj2485, poj1258, poj3026)

(4) topological sorting (poj1094)

(5) maximum matching of bipartite graphs (Hungary algorithm) (poj3041, poj3020)

(6) augmented Path Algorithm for the maximum stream (km algorithm). (poj1459, poj3436)

Iii. data structure.

(1) string (poj1035, poj3080, poj1936)

(2) sorting (fast sorting, Merge Sorting (related to the number of reverse orders), heap sorting) (poj2388, poj2299)

(3) Simple and query set applications.

(4) efficient search methods such as hash table and binary search (number hash, string hash)

(Poj3349, poj3274, poj2151, poj1840, poj2002, poj2503)

(5) Harman tree (poj3253)

(6) Heap

(7) trie tree (static and dynamic) (poj2513)

4. Simple search

(1) Deep Priority Search (poj2488, poj3083, poj3009, poj1321, poj2.pdf)

(2) breadth-first search (poj3278, poj1426, poj3126, poj3087.poj3414)

(3) simple search techniques and pruning (poj2531, poj1416, poj2676, 1129)

5. Dynamic Planning

(1) backpack problems. (poj1837, poj1276)

(2) Simple DP in the following table (refer to page149 in lrj ):

1. E [J] = opt {d + W (I, j)} (poj3267, poj1836, poj1260, poj2533)

2. E [I, j] = opt {d [I-1, J] + Xi, d [I, J-1] + YJ, d [I-1] [J-1] + zij} (longest common subsequence)

(Poj3176, poj1080, poj1159)

3. c [I, j] = W [I, j] + opt {C [I, k-1] + C [K, J]}. (optimal binary search tree problem)

6. Mathematics

(1) combined mathematics:

1. Principle of addition and multiplication.

2. Arrange and combine.

3. Recursive relationship.

(Poj3252, poj1850, poj1019, poj1942)

(2) number theory.

1. Prime Number and Division

2. hexadecimal digits.

3. Same modulus operation.

(Poj2635, poj3292, poj1845, poj2115)

(3) calculation method.

1. Knowledge about monotonic functions in the binary method. (poj3273, poj3258, poj1905, poj3122)

VII. computational geometry.

(1) geometric formula.

(2) Use of cross products and dot products (for example, determination of intersection of line segments and distance between points and line segments). (poj2031, poj1039)

(3) simple multi-edge algorithm (area calculation) and correlation determination (whether the multi-edge is in the Multi-edge type and whether the multi-edge type is intersection)

(Poj1408, poj1584)

(4) convex hull. (poj2187, poj1113)

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.