這篇文章是我自己的經驗,只是某天剛好有人問,就把回答記錄一下~
這裡可以聯繫到我:
- Discord:
temmieowo
- Email:
kapoo950807@gmail.com
要理解 C 語言中視域的概念,在不同函數使用變數會存取到誰。此外還有函數 pass by reference、pass by value 的概念。
<
跟 <=
的差別,以及多層迴圈中,變數彼此是怎麼影響的,這可能要多作題觀念才能起來。
for ([1] 初始設定 ; [2] 如果這裡成立就到 [3],否則到 [5] ; [4] 結束狀態,執行後到 [2]){
[3] 每次迴圈要做的事情
continue; // 到步驟 [4]
break; // 到步驟 [5]
}
[5] 結束迴圈
函式如同函數的概念,也就是 「同個參數、同個輸出」 這代表題目中的東西若重複用到多個相同參數的函數,你應該要用「記憶化」,也就是把函數的計算結果存起來,要用的時候直接用(例子:阿克曼函數 ,試著手算 A(3, 4)
)
switch
陳述句a<b<c
這邊可以和實作題一起練,因為多數這種題目只要看出是什麼演算法,基本上可以秒解(例子:LCS)。
最重要的還是數學邏輯要好,筆者第一次考就四級分了(現在也還是四級分)。
「請先不要學任何演算法」,因為第二題根本只是最基礎的實作題、幾乎沒有任何演算法,無法答對這題代表實作能力還不行。
請先去讀 AP123、練好基本語法能力再看下一步
演算法建議可以從下面的順序開始學,AP325 是不錯的選擇
無敵推薦、一定要先去看!
三級分以前:看 0~15 章
三級分以後:看 16~26 章
有許多講義都沒有提及的技巧,值得一看。
板中的舊講義,不算完整,但可以翻翻看,或許會找到一些有趣的東西。
相當完整的講義,適合 APCS 3~5 級分的人。
有很多超出 APCS 範圍的內容。
相當完整、難度很廣,建議四級分以上再來看看有沒有自己缺的知識。
(需要登入並註冊課程後才能看到)提供很多進階的資結、演算法介紹,以及有裸題可以練。
若是針對 APCS、請只看Binary Search
、Two Pointers Method
、Disjoint Sets Union
,有能力的話可以再看Segment Tree, part 1
。
根據 2023 年 IOI 國手所述,他最推薦先刷滿的 Judge。後者是我滿喜歡的原文書,可以搭配 CSES 一起寫的,他們的主題是類似的。
美國 IOI 國手寫的,循序漸進,搭配 CSES 一起看還不錯。
中國的競程網站,用來探索不同演算法非常有趣。