# 關於 APCS 準備 :::spoiler 目錄 [TOC] ::: > 這篇文章是我自己的經驗,只是某天剛好有人問,就把回答記錄一下~ > 這裡可以聯繫到我: > - Discord: `temmieowo` > - Email: `kapoo950807@gmail.com` ## 觀念題 ### 語法 #### 變數 要理解 C 語言中視域的概念,在不同函數使用變數會存取到誰。此外還有函數 pass by reference、pass by value 的概念。 #### for 迴圈 1. 了解使用 `<` 跟 `<=` 的差別,以及多層迴圈中,變數彼此是怎麼影響的,這可能要多作題觀念才能起來。 2. 記得 for 迴圈的處理順序如下: ```cpp= for ([1] 初始設定 ; [2] 如果這裡成立就到 [3],否則到 [5] ; [4] 結束狀態,執行後到 [2]){ [3] 每次迴圈要做的事情 continue; // 到步驟 [4] break; // 到步驟 [5] } [5] 結束迴圈 ``` #### 函式 函式如同函數的概念,也就是 **「同個參數、同個輸出」** 這代表題目中的東西若重複用到多個相同參數的函數,你應該要用「記憶化」,也就是把函數的計算結果存起來,要用的時候直接用(例子:[阿克曼函數](https://zh.wikipedia.org/zh-tw/%E9%98%BF%E5%85%8B%E6%9B%BC%E5%87%BD%E6%95%B8) ,試著手算 `A(3, 4)`) #### 少見語法 - `switch` 陳述句 - 連續使用比較運算子 `a<b<c` - 整數除法向 0 取整(小數點取整是直接將小數部分移除) ### 演算法 #### 搜尋演算法 - 二分搜(找到的元素在哪個位置、要找幾次等等) #### 排序演算法 - ==氣泡排序(極為重要)== - 氣泡排序的交換次數 - 插入排序 - 合併排序 #### 更多的進階演算法 這邊可以和實作題一起練,因為多數這種題目只要看出是什麼演算法,基本上可以秒解(例子:LCS)。 ### 其餘有的沒的 最重要的還是數學邏輯要好,筆者第一次考就四級分了(||現在也還是四級分||)。 ## 實作題 ### 如果你還沒達到三級分 「請先不要學任何演算法」,因為第二題根本只是最基礎的實作題、幾乎沒有任何演算法,無法答對這題代表實作能力還不行。 請先去讀 AP123、練好基本語法能力再看下一步 ### 如果你達到三級分 演算法建議可以從下面的順序開始學,AP325 是不錯的選擇 1. 枚舉 2. STL 3. 二分搜、雙指針、滑動窗口 4. 貪心 5. 動態規劃 6. 圖論 ## 實作題學習資源 - [基礎競程教材](https://emanlaicepsa.github.io/2020/10/21/0-index/) > 無敵推薦、一定要先去看! > 三級分以前:看 0~15 章 > 三級分以後:看 16~26 章 - [AA 競程公開課](https://youtube.com/playlist?list=PLuV4P3EY8fXl-2qmLTZVWS3deHyxxWLUI) > 有許多講義都沒有提及的技巧,值得一看。 - [板中聖經](https://docs.google.com/document/d/1A5pBTSSr-jyMsh5vCIEZhGN9W5VEFs8Z\_G\_u5OLsYJ0/edit#heading=h.caxa2y8e7e2d) - [板中聖經 - 題單]( https://docs.google.com/document/d/1jOjyMrkb0Qwu3g2u6zhhaE2Z8XFb-Y2DqToGzEq1dhU/edit) > 板中的舊講義,不算完整,但可以翻翻看,或許會找到一些有趣的東西。 - [AP325](https://drive.google.com/drive/folders/10hZCMHH0YgsfguVZCHU7EYiG8qJE5f-m) - [AP325 - OJ](https://judge.tcirc.tw/Problems?tabid=AP325) > 相當完整的講義,適合 APCS 3~5 級分的人。 - [四校聯合暑訓](https://youtube.com/playlist?list=PL_815psSzw1FATzqwJdWaWJHGcH4F6DUz) - [四校聯合暑訓 - 簡報](https://github.com/HHSH-CYSH-WGSH-HSNU-Summer-Camp) - [四校聯合暑訓 - 題單](https://docs.google.com/spreadsheets/d/1HLyEoZzC2wycA776bF8jLsRhhQKm8eEkQe_qgisNpG4/edit?usp=sharing) > 有很多超出 APCS 範圍的內容。 > 相當完整、難度很廣,建議四級分以上再來看看有沒有自己缺的知識。 - [CodeForces EDU](https://codeforces.com/edu/course/2) > (需要登入並註冊課程後才能看到)提供很多進階的資結、演算法介紹,以及有裸題可以練。 > 若是針對 APCS、請只看 `Binary Search`、`Two Pointers Method`、`Disjoint Sets Union`,有能力的話可以再看 `Segment Tree, part 1`。 - [CSES](https://cses.fi/) - [Competitive Programmer’s Handbook](https://cses.fi/book/book.pdf) > 根據 2023 年 IOI 國手所述,他最推薦先刷滿的 Judge。後者是我滿喜歡的原文書,可以搭配 CSES 一起寫的,他們的主題是類似的。 - [USACO guide](https://usaco.guide/dashboard) > 美國 IOI 國手寫的,循序漸進,搭配 CSES 一起看還不錯。 - [OI-wiki](https://oi-wiki.org/) > 中國的競程網站,用來探索不同演算法非常有趣。 {%hackmd @temmie950807/r1KCzgjFh %}