Note: Reproduced from Baidu post-paste
The ACM team did not exist for a match, for the overall improvement of the players.
In the University, the ACM team must learn the following courses:
Lc/c++ of two languages
L Advanced Mathematics
L Linear algebra
L Data structure
L Discrete Mathematics
L Database Principles
L Operating System principle
L Principles of Computer composition
L Artificial Intelligence
L Compilation principle
L Algorithm Design and analysis
Besides, I hope you can master some other knowledge, because knowledge is interrelated and comprehend by analogy.
The following study plan is not in order in each semester, although for the students who aspire to study the ACM List of knowledge, but the content is not limited to ACM knowledge. Please allocate your own time for courses that are far apart from your major in English, not listed here.
Freshman last semester:
Must learn:
1.C Language Basic grammar must all learn
A) Recommended "language primer" classification of more than 20 questions
b) Complete the C language course design in advance
2. Simple math problem (recommended "math" category 20 or more)
The following basic algorithms need to be mastered:
A) Euclidean algorithm to seek greatest common divisor
b) Sieve method to calculate prime number
c) Cantor launches
d) Counter-Cantor unfold
E) congruence theorem
f) The second-party evaluation mode
3. Preliminary calculation of geometry
A) triangular area
b) Three-point order
4. Learn the time complexity and space complexity of simple calculation program
5. Two-point lookup method
6. Simple Sorting algorithm
A) bubble sorting method
b) Insert Sort method
7. Greedy Algorithm Classic Topic
8. Advanced Mathematics
The following are optional:
9. Learn to use simple DOS commands (more important)
A) Color/dir/copy/shutdown/mkdir (MD)/rmdir (RD)/attrib/cd/
b) know what absolute and relative paths are
c) Learn to use C language to invoke DOS commands
D) Learn to downgrade your own program written in C using your own command prompt, and use command-line arguments to pass parameters to your program (such as making a copyfile.exe that implements the basic functionality of the Copy command)
e) Learn to write bat batch files
10. Learn some small knowledge of Windows system, such as setting hidden files, autorun.inf settings, etc.
11. Learn to edit the registry (including using Registry Editor regedit and using DOS commands to edit the registry)
12. Learn to use Group Policy Manager management (Gpedit.msc) Group Policy.
Big semester:
1. master C + + part syntax, such as reference type, function overloading, etc., basically understand what is a class.
2. Learn BFS and DFS
A) Maze solver (minimum number of steps)
b) Number of pools (NYOJ27)
c) Image useful area (NYOJ92)
d) sequential traversal of a tree in the pre-order sequence
3. Dynamic planning (more than 15 questions), we should learn to use the cyclic method to write dynamic programming, but also learn to use the method of memory search.
A) maximum substring and
b) The longest common sub-sequence
c) Maximum monotonically incrementing subsequence (O (n) and O (NLOGN) algorithms need to be mastered)
d) 01 Backpack
e) RMQ algorithm
4. Learn to analyze and calculate time complexity of complex programs
5. Learn to use linear storage structures such as stacks and queues
6. Learn the strategy of division and treatment
7. Sorting algorithms
A) Merge sort
b) Quick Sort
c) Counting sort
8. Number theory
A) Extended Euclidean algorithm
b) seeking inverse element
c) Congruence equation
d) Chinese remainder theorem
9. Game theory
A) game problem and the definition of SG function
b) Multiple game problems merging of SG values
10. Graph theory:
A) Two common storage methods of adjacency matrix and adjacency table of graphs
b) Determination of Oralu
c) The single Shortest path Bellman-ford algorithm Dijkstra algorithm.
d) Kruskal algorithm and prim algorithm for minimum spanning tree.
11. Learn to use C language for network programming and multi-threaded programming
12. Advanced Mathematics
13. Linear algebra
A) clarify the importance of linear algebra, first of all, the textbook must learn
b) write a matrix class, perform various operations on the matrices, and ask the programming program to solve the linear equations.
c) recommended to do one or two "matrix operations" under the classification of the topic.
The following is an elective, randomly selected one or two studies can:
14. (More important) use C or C + + to write simple programs to invoke some simple windowsapi, or Linux system calls under Linux, to understand what an API (Application interface) is.
15. Web Design
A) Learning static web technology (HTML+CSS+JAVASCRIPT)
b) More artistic cells can try Photoshop
c) php or other Dynamic web technologies
16. Learn matlab, if you want to participate in mathematical modeling contest, you need to learn this software.
Freshman Holidays (if you stay in school training)
1. Mastering C + + syntax, and skilled in using STL
2. Try to implement some basic STL container and function, so that they can understand the STL source code basically
3. Graph theory
A) Optimize Dijkstra and prim using priority queues
b) SPFA of single Source shortest path
c) Differential constraint system
d) Floydwarshall algorithm of multi-source multi-point Shortest path
e) Seek Oralu (trap loop algorithm)
4. Training for Complex simulation questions
5. Topology sequencing
6. Dynamic Planning Advanced
A) a full backpack, multi-backpack and other knapsack problems (see backpack nine talk)
b) A certain number of dynamic programming topics are completed on POJ
c) Dynamic programming of State compression
d) tree-shaped dynamic planning
7. Search
A) Backtracking method skilled application
b) complex search topic exercises
c) Bidirectional breadth First search
d) heuristic search (including A * algorithm, such as eight digital problems)
8. Calculating geometry
A) Determine if the point is on a line segment
b) determine the intersection of segments
c) Determine if the rectangle contains points
d) Determine the relationship between circle and rectangle
e) Determine if the point is within the polygon
f) Determine the point to the nearest point of the segment
g) Calculate the Gongsche of two circles
h) Calculate the area of the rectangle
i) to find the polygon area
j) Finding the center of gravity of a polygon
k) to find convex bag
Take
9. You can learn a C + + development Framework to write some form programs to play (such as MFC,QT, etc.).
10. Learn to connect to a database using C or C + +.
Large 21 Year:
1. Data structure
A) Monotone queue
b) Heap
c) and check the set
D) tree-like array
e) Hash Table
f) Segment Tree
g) Dictionary Tree
2. Graph theory
A) strong connected components
b) Dual connected components (for cut points, bridges)
c) Strong connected component and double connected component shrinking point
D) The conversion of LCA, LCA and RMQ
e) Two-part graph matching
I. Two maximum matching of graphs
II. Minimum point set coverage
III. Minimum Path coverage
Iv. two optimal matching of graphs
V. Two multi-Match of graphs
f) Network flow
I. Basic SAP for maximum flow
Ii. high-efficiency algorithms such as ISAP or dinic for maximum flow (either)
Iii. Minimum cost maximum flow
Iv. maximum flow minimum cut theorem
3. Dynamic programming to improve the problem (more than 10 problems)
4. Number theory
A) application of the integrable function
b) Euler's theorem
c) Fermat theorem
d) Granville Lossen theorem
5. Combinatorial mathematics
A) basis of group theory
b) Polya theorem and counting problem
c) Number of Catalan
6. Calculating geometry
A) various rotational jam-related algorithms
b) Three-dimensional computational geometry algorithm
7. Understand database principles, learn SQL statements
8. Learn the principles of computer composition
9. Learn the Transact-SQL language, learn to use triggers, stored procedures, learn database transactions, etc.
10. Figure Theory II
A) Various composition training of network flow (important)
b) The relationship between minimum cut and minimum point weight coverage (see the application of the minimum cut model in the Informatics competition article)
C) Sub-niche into a tree
d) section K short Circuit
e) Minimum ratio spanning tree
11. Linear Programming
12. Dynamic Planning more advanced
13.KMP algorithm
Theory and realization of 14.AC automata
15. Alpha-beta Pruning of game theory
Elective, interested can learn:
16. Self-study C # or Java to do a project, such as the C++/c#/java exam system.
17. Play some small games first, then you can learn DirectX or OpenGL, or you can try XNA the game frame.
18. Learn about the game engine related knowledge
One of the best winter holidays:
1. Self-taught discrete mathematics
2. Some chapters of the Theory of self-study probability
3. Self-study operating system sections
Junior
1. Consolidate the prior knowledge and go through the major review.
2. A number of random algorithms, such as ant colony algorithm, genetic algorithm, simulated annealing algorithm, and other artificial intelligence are widely used.
3. Apply the compiling principle to the programming: such as DFA,NFA, there are various methods of grammatical analysis.
When you follow the above step by step, you are already a cow, the back of what to learn, is by the cattle themselves to explore.
The path of ACM growth