第一章 算法競賽概述
算法競賽(程序設計競賽)是培養傑出程序員的捷徑。
在國內眾多競賽中,面向中學生的程序設計競賽有全國青少年信息學奧林匹克競賽(NOI),最具影響力的面向大學生的程序設計競賽有ACM-ICPC(國際大學生程序設計競賽),CCPC(中國大學生程序設計競賽)
培養傑出程序員的捷徑:1.編寫大量代碼; 2.豐富的算法知識; 3. 計算思維和邏輯思維; 4. 團隊合作精神。
算法競賽入門: 1. 競賽隊員主要的學習方法就是“刷題”;2. 反思總結(模板學習)
天賦與勤奮。天賦決定上限,努力決定下限。
建模能力。模板非常有用,其重要性主要在於幫助參賽選手理解經典算法,而不一定能用在賽場上。真正的學習是掌握算法后面的思想,而不是只會背算法。在學習時不要追求學到的算法的“數量”,而是要掌握其“思想”。很多算法的思想其實是相通的。從這個角度出發也可以比較好理解“質”> “量”。
提高編程速度,最根本的還是要通過大量練習,提高編碼的熟練程度,“無他,但手熟爾!”
本章代碼
1 // 輸入結束的方式 2 3 while(~scanf("%d %d",&a,&b)) 4 5 //在競賽時,一般不建議用判斷EOF的方法。 6 // 輸入與輸出效率 7 8 // 在C++語言中,輸入和輸出常用的語句是cin、cout,優點是很方便。
// 但是需要注意,與scanf(),printf()相比,cin、cout的效率很低,速度很慢。如果題目中有大量測試數據,可能導致TLE。 9 10 //編碼技巧1 11 typedef long long LL 12 13 那么 long long a=123456789; 14 變成簡潔的: LL a=123456789 15 16 //編碼技巧2 17 最好不要用宏。不管是宏定義還是宏函數,都容易出問題 18 不要用#define 定義常量,而用const 定義常量,例如 19 20 const int MAX = 1000005; 21 22 把宏函數寫成普通函數
本章推薦例題:
參考資料:
OI 賽事與賽制