下面是ACM大賽的知識要求,大學畢業時達到如下知識要求內容:
要求通常要作到50行之內的程序不用調試、100行之內的二分鐘內調試成功,主要時間是花在思考算法上,不是花在寫程序與debug上。
須要學好的主要科目有: l C/C++兩種語言 | 高等數學 | 線性代數 | 數據結構 | 離散數學 | 數據庫原理 | 操做系統原理 | 計算機組成原理 | 人工智能| 編譯原理 | 算法設計與分析|機率論與數理統計
大一上學期: 必學:
1. C語言基礎語法必須所有學會javascript
2. 簡單數學題(推薦「數學」分類20道以上) php
4. 學會簡單計算程序的時間複雜度與空間複雜度
5. 二分查找法
6. 簡單的排序算法 css
7. 貪心算法經典題目
8. 高等數學 如下爲選修:
9. 學會使用簡單的DOS命令(較重要) html
10. 學會Windows系統的一些小知識,如設置隱藏文件,autoRun.inf的設置等。
11. 學會編輯註冊表(包括使用註冊表編輯器regedit和使用DOS命令編輯註冊表)
12. 學會使用組策略管理器管理(gpedit.msc)組策略。
大一下學期:
1. 掌握C++部分語法,如引用類型,函數重載等,基本明白什麼是類。
2. 學會BFS與DFS java
3. 動態規劃(15題以上),要學會使用循環的方法寫動態規劃,同時也要學會使用記憶化搜索的方法。 linux
4. 學會分析與計算複雜程序的時間複雜度
5. 學會使用棧與隊列等線性存儲結構
6. 學會分治策略
7. 排序算法 算法
8. 數論 數據庫
9. 博弈論 編程
10. 圖論: windows
11. 學會使用C語言進行網絡編程與多線程編程
12. 高等數學
13. 線性代數
14. (較重要)使用C語言或C++編寫簡單程序來調用一些簡單的windows API,或者在linux下進行linux系統調用,其目的是明白什麼是API(應用程序接口)。
15. 網頁設計 a) 學習靜態網頁技術(html+css+javascript) b) 較具備藝術細胞的能夠試試Photoshop c) php或其它動態網頁技術
16. 學習matlab,若是想參加數學建模大賽的話,須要學這個軟件。
大一假期
1. 掌握C++語法,並熟練使用STL
2. 試着實現STL的一些基本容器和函數,使本身基本能看懂STL源碼
3. 圖論
4. 進行復雜模擬題訓練
5. 拓撲排序
6. 動態規劃進階
a) 徹底揹包、多重揹包等各類揹包問題(參見揹包九講)
b) POJ上完成必定數目的動態規劃題目
c) 狀態壓縮動態規劃
d) 樹形動態規劃
7. 搜索
選修
9. 能夠學習一種C++的開發框架來編寫一些窗體程序玩玩(如MFC,Qt等)。
10. 學習使用C或C++鏈接數據庫。
大二一全年:
1. 數據結構
3. 動態規劃多作題提升(10道難題以上)
4. 數論 a) 積性函數的應用 b) 歐拉定理 c) 費馬小定理 d) 威樂遜定理 5. 組合數學 a) 羣論基礎 b) Polya定理與計數問題 c) Catalan數
6. 計算幾何 a) 各類旋轉卡殼相關算法 b) 三維計算幾何算法 7. 理解數據庫原理,學會SQL語句
8. 學好計算機組成原理
9. 學習Transact-SQL語言,學會使用觸發器,存儲過程,學會數據庫事務等。
10. 圖論二 a) 網絡流的各類構圖訓練(重要) b) 最小割與最小點權覆蓋等的關係(詳見《最小割模型在信息學競賽中的應用》一文) c) 次小生成樹 d) 第k短路 e) 最小比率生成樹
11. 線性規劃
12. 動態規劃更高級進階
13. KMP算法
14. AC自動機理論與實現
15. 博弈論之Alpha-beta剪枝 選修,有相關興趣的能夠學一下:
16. 自學C#或Java作一個項目,好比C++/C#/Java考試系統之類的。
17. 先作一些小遊戲玩玩,而後能夠學一下DirectX或者OpenGL,或者能夠試試XNA遊戲框架。
18. 瞭解一下游戲引擎相關的知識 其中的寒假假期最好:
1. 自學完離散數學
2. 自學機率論的部分章節
3. 自學操做系統部分章節
大3、 1. 鞏固以前的知識,進行一遍大複習。 2. 一些如蟻羣算法,遺傳算法,模擬退火算法等人工智能方面應用較廣的隨機性算法。 3. 把編譯原理上學的東西應用到編程中:如DFA,NFA,還有語法分析的各類方法等。