◤ APCS 8級分!清大錄取生不藏私:實作第三、四題技術性策略 ◢
想要靠 APCS 錄取頂大?本文由 CodePro 學員睿倬高中畢業後,這幾年也都有來協助CodePro的營隊當程式助教!
他也親自分享 APCS 學科4、術科4(8級分)的備考心路歷程!
尤其是他特別分做 考試 以及 備審準備的兩大部分
不藏私公開 Python 刷題資源(zerojudge、AP325)、如何避免 Python 程式碼超時(TLE),以及如何運用分治法、動態規劃等演算法在術科第三、四題技術性拿分,更有給高中生的 APCS 組二階面試升學建議!
===== 睿倬 APCS 考試心得 =====
#考試時間:2021 年 01 月 09 日、2022 年 10 月 23 日
#考試地點:中興大學
#成績:學科 4 術科 4
#程式資歷:上過CodePro Minecraft程式班、Python班
#報名課程:CodePro APCS 程式檢定培訓班
在參加APCS班之前,我已經上過CodePro的其他課程,因此具備基本的Python語法知識。聽到Peter老師提到APCS有助於升學,我便報名了課程。上了近一學期後迎來第一次考試,獲得了七級分。由於高中課業繁重,我暫停了課程,但在高中三年間仍持續報名APCS考試,目標是實作四級分。直到高三上學期,才終於達成目標,花費了大量時間。
考前的準備主要是聽Peter老師講解資料結構,並解一些競程題目。周末有助教課,助教非常用心,不僅講解題目,還會幫我們看程式碼,協助解題。
由於大學APCS升學以術科和學科歷次最高成績為準,我後來只報名術科考試來努力突破四級分。這樣也不用在考試當天的早上花費許多精神,讓我可以專心在下午的術科考試。這裡提供一些拿分要訣:若要拿到實作四級,關鍵在於解出術科的第三題和第四題。這兩題非常依賴演算法觀念,有時可以採取技術性的拿分策略,兩題各拿一半分數也是一種方法。
1. 學科: 老師提供的模擬考
2. 術科: 老師的講義、codepro OJ, zerojudge, atcoder(國外OJ平台), AP325講義(online)(for python version)
基本上把老師提供的題目練完就能拿到四級分,非常容易。
若要拿到五級分,看一些網路上的大佬們說,需要練到看到程式碼就能推出程式在做什麼操作或運算,想辦法試著不用土法煉鋼的方式去解題。
▎術科準備方式
術科共有四道題目,前兩題屬於基本題。第二題相對較難,儘管不需要太深的觀念,但考得相當複雜。四題中第二題的程式碼通常最長,需要大量時間,建議多練習APCS考古題以熟悉其模式。
第三、四題如前所述,需要一定的演算法觀念來優化程式,避免TLE(超時)。這部分的訓練只能通過多練習題目,通常可從模仿開始,學習大家常用的解法,然後嘗試自己解題,再優化程式碼。
APCS常考的演算法觀念包括:分治法、貪心演算法、動態規劃、圖論和樹。我通常會先看題目,思考適用的演算法,再用該演算法設計解法。圖論和樹的解法較明顯,只需記住相關演算法即可。貪心和動態規劃較難判斷,通常如果資料量不大但題目複雜,可試用動態規劃;反之,輸入測資沒那麼多時,則選擇貪心演算法。
如果完全不確定,可以用分治法,雖非最佳解法,但或許能拿到部分分數。四級分的門檻是完成三題,或前兩題完成,第三、四題各取得一半分數。
▎給大家的建議
For考試的部分:
1. 想要拿到高分,必須不斷地刷題,確保一、二題一定要拿到,否則很吃虧。解題時,除了想出解法,還要注意時間限制和資料量的大小,並考慮題目可能會出的極值或邊界值的輸入。
2. 由於官方限制了許多Python的函式庫(模組),一些常用的程式碼片段(如二分搜尋)或方便的工具(如map()函數)需要牢記。此外,要注意你所用到的程式(函數)的時間複雜度,因為Python中許多方便的程式碼背後可能有較高的時間成本,對於追求效率的競賽程式設計可能非常不適合。例如,我一開始學習處理串列時,經常使用insert(),但這種寫法的時間複雜度很差(O(n)),常常因為寫在迴圈裡導致TLE。
3. 最後建議大家,可以多看看別人的解法。雖然他人使用的寫法可能是其他語法,但還是可以試著解讀看看,搞不好會有更多的收穫。
For 升學:
1. 建議大家趁暑假或空閒時報名,因為APCS考試時間常與學校段考相近。高中時,常常碰到考完APCS後常需立即準備學校期中考的狀況。因此平時的時間分配非常重要。
2. APCS經歷對於備審是一個大大的加分,所以鼓勵大家嘗試。報名費免費,可以多多參加。對於理工相關科系,有了APCS成績,在大學二階面試中能使你相較於競爭對手有更多優勢。
3. 若你能考到4/4,恭喜你獲得進頂大APCS組的門票,但要錄取還需要再努力一些。因為在二階面試時會遇到許多神級高手,甚至一些奧林匹亞國手。這時備審變得非常重要,可以多參加資訊競賽來豐富備審,教授非常重視這些經歷。你可以繼續往競程方向發展,參加如NPCS、YTP等競賽,或是往資安方向發展。由於資安部分我不太了解,這裡不多述。大家可以在Google搜尋前輩們的心得來深入了解。
(這裡主要針對APCS組的二階面試作介紹)
💡你也想要APCS考取高分,擁有前往頂大的入場券嗎?
適合國高中生!立即了解CodePro APCS常規班
➡️ 點我了解APCS正規課程
點我看更多APCS心得文➡️ APCS 一戰 7 級分!輕鬆取得成大、政大、台師大等頂尖大學申請資格