Although I have already prepared for research and development, I want to start playing ACM... Come on.

Below is the plan found in The Post Bar ~

The ACM team does not exist for a game, but for the overall improvement of the players.

During college, ACM team members must take the following courses:

LC/C ++

L advanced mathematics

L Linear Algebra

L Data Structure

L Discrete Mathematics

L database principles

L operating system principle

L computer composition principle

L artificial intelligence

L Compilation Principle

L algorithm design and analysis

In addition, I hope you can master some other knowledge, because the knowledge is interrelated and similar.

The content of the following learning plan is in no particular order each semester. Although it is a list of Knowledge listed by those who are determined to learn ACM, the content is not limited to ACM knowledge. For courses that are far away from your major, assign time by yourself.

Freshman last semester:

Required:

1. Basic C language syntax must be fully learned

A) more than 20 questions are recommended for the "language entry" category.

B) complete C language curriculum design in advance

2. Simple mathematical questions (more than 20 mathematical questions are recommended)

Master the following basic algorithms:

A) Euclidean Algorithm for Finding the maximum common number

B) obtain the prime number by screening

C) Expand Kanto

D) expand anti-conto

E) Same Remainder Theorem

F) Evaluate the power modulo

3. Preliminary Calculation of ry

A) Triangle Area

B) Three-Point Sequence

4. Learn the time complexity and space complexity of a simple computing program

5. Binary Search

6. Simple Sorting Algorithm

A) Bubble Sorting

B) insert sorting method

7. Classic questions about greedy Algorithms

8. Advanced Mathematics

The following are optional courses:

9. Learn to use simple doscommands (more important)

A) color/DIR/copy/shutdown/mkdir (MD)/rmdir (RD)/attrib/CD/

B) Know What absolute paths and relative paths are.

C) learn to use C language to call doscommands

Functions are implemented in the same way as the basic functions of the Copy command)

E) learn to write bat batch files

10. Learn some tips about Windows systems, such as setting hidden files and autorun. inf settings.

11. Learn to edit the registry (including using the Registry Editor regedit and using the doscommand to edit the Registry)

12. Learn to use the Group Policy Manager to manage (gpedit. MSC) group policies.

Freshman Semester:

1. understand some C ++ syntaxes, such as reference types and function overloading.

2. Learn BFS and DFS

A) maze solution (minimum steps)

B) Number of pools (nyoj27)

C) Useful image areas (nyoj92)

D) tree pre-order, middle-order, and post-order traversal

3. for Dynamic Planning (more than 15 questions), you must learn to use a circular method to write dynamic planning, and also learn to use a memory-based search method.

A) Maximum substring and

B) Longest Common subsequence

C) The longest monotonic increasing subsequence (O (N) and O (nlogn) algorithms must be mastered)

D) 01 backpack

E) rmq Algorithm

4. Learn to analyze and calculate the time complexity of complex programs

5. Learn to use linear storage structures such as stacks and queues

6. Learn the sub-Governance Policy

7. Sorting Algorithm

A) Merge and sort

B) quick sorting

C) counting and sorting

8. Number Theory

A) Extended Euclidean Algorithm

B) reverse Element

C) homogeneous equation

D) China Residue Theorem

9. Game Theory

A) Game Problems and SG function definitions

B) Merge SG values of Multiple game problems

10. Graph Theory:

A) two common ways to store the graph's Adjacent matrix and the adjacent table

B) Euler's path determination

C) Single-to-short Bellman-Ford algorithm Dijkstra algorithm.

D) the Kruskal algorithm and prim algorithm of the Minimum Spanning Tree.

11. Learn to use C language for network programming and multi-thread programming

12. Advanced Mathematics

13. Linear Algebra

A) To clarify the importance of linear algebra, first, the textbook must learn well.

B) Compile a matrix class, perform various operations on the matrix, and compile a program to solve the linear equations.

C) one or two questions under the "matrix operation" category are recommended.

The following is an optional course. Select one or two courses:

14. (important) use C language or C ++ to write simple programs to call some simple windows APIs, or call the Linux System in Linux, the purpose is to understand what an API is ).

15. Webpage Design

A) Learning static Web Page Technology (HTML + CSS + JavaScript)

B) If you have more artistic cells, try Photoshop.

C) PHP or other dynamic web technologies

16. Learning MATLAB. If you want to participate in the mathematical modeling competition, you need to learn this software.

Freshman holiday (if you stay in school for training)

1. Familiar with C ++ syntax and use STL

2. Try to implement some basic containers and functions of STL so that you can understand the STL source code.

3. Graph Theory

A) Use priority queue to optimize Dijkstra and prim

B) spfa for a single-source shortest path

C) Differential constraint system

D) multi-source Multi-Point Shortest Path floydwarshall Algorithm

E) Euler's path (ring algorithm)

4. perform complex simulated question Training

5. topological sorting

6. Advanced Dynamic Planning

A) Complete backpacks, multiple backpacks, and other backpack problems (refer to Section 9 about backpacks)

B) complete a certain number of dynamic planning questions on poj

C) State compression Dynamic Planning

D) tree-based Dynamic Planning

7. Search

A) Skillful Use of backtracking

B) complex question search exercises

C) bidirectional breadth-first search

D) heuristic search (including a * algorithm, such as Octa digital problem)

8. Computational ry

A) Determine whether the vertex is on the online segment.

B) determine the intersection of line segments

C) determine whether a rectangle contains vertices.

D) determine the relationship between the circle and the rectangle

E) Determine whether the vertex is inside the polygon.

F) judge the closest point to a line segment

G) Calculate the public tangent of two circles

H) calculates the area of the sum of the rectangle.

I) Calculate the Polygon Area

J) returns the polygon center of gravity.

K) Convex Hull

Electives

9. You can learn a C ++ development framework to compile some form programs (such as MFC and QT ).

10. Learn to use C or C ++ to connect to a database.

Throughout the year:

1. Data Structure

A) monotonous queue

B) Heap

C) Check the set

D) tree Array

E) hash table

F) Line Segment tree

G) dictionary tree

2. Graph Theory

A) strongly connected components

B) connected component (cut point, bridge)

C) contraction points of strongly connected components and dual connected components

D) Conversion between LCA, LCA, and rmq

E) Bipartite Graph Matching

I. Maximum matching of bipartite graphs

Ii. Least point set coverage

Iii. Minimum path Overwrite

Iv. Optimal Bipartite Graph Matching

V. bipartite graph multi-match

F) network stream

I. Basic sap of the maximum stream

Ii. efficient algorithms such as ISAP or dinic of the maximum stream (any)

Iii. Maximum Minimum fee Flow

Iv. Maximum Flow least cut Theorem

3. Dynamic Planning, multi-question improvement (more than 10 Difficulties)

4. Number Theory

A) application of product functions

B) Euler's Theorem

C) ferma's Theorem

D) Wilson's Theorem

5. Combined mathematics

A) group theory basis

B) polyA theorem and counting problems

C) Catalan count

6. Computational ry

A) various algorithms for rotating jamming Shells

B) three-dimensional calculation geometric algorithm

7. Understand database principles and learn SQL statements

8. Learn computer composition principles

9. Learn the transact-SQL language, Use triggers, stored procedures, and database transactions.

10. Graph Theory 2

A) graph training for network streams (important)

B) Relationship between least cut and least Point Weight coverage (for details, see the article "Application of least cut model in informatics competition)

C) sub-tree Creation

D) nth Short Circuit

E) least Ratio Spanning Tree

11. Linear Programming

12. Advanced Dynamic Planning

13. KMP Algorithm

14. Theory and implementation of AC automatic machines

15. Alpha-beta pruning in Game Theory

Optional courses:

16. Self-taught C # or Java to build a project, such as C ++/C #/Java examination system.

17. Do some games first, and then you can learn DirectX or OpenGL, or try the xNa game framework.

18. Learn about the game engine.

Among them, the best winter vacation is:

1. Self-taught Discrete Mathematics

2. Part of self-taught Probability Theory

3. Learn the Operating System Section

Junior,

1. Consolidate the previous knowledge and conduct a big review.

2. Random algorithms that are widely used in AI, such as ant colony algorithms, genetic algorithms, and simulated annealing algorithms.

3. Apply the compilation principles to programming, such as DFA, NFA, and syntax analysis methods.

When you follow the steps above, you are a cool man. The things to learn later are discovered by the cool man himself.

ACM advanced plan