# 便宜的演算法比賽網路資源整理 ### -2. 筆者的話 這裡都是我 ([pr3pony](mailto:pr3pony@gmail.com)) 在網路上找到的演算法比賽學習資源,大部分都是 free 的(自由或免費),有些可能要花一點錢(書本),有些可能很貴(?)。內容從程式語言的語法、演算法入門一直到 IOI 等國際比賽的優秀選手所需要的先備知識都有。我有盡量照難度排序,可以按自己的程度跳著閱讀,但是如果你全部瀏覽過一遍我會很開心。以下文中的「我」都是指 pr3pony,並且敘述帶有個人主觀意見,當參考就好。 ## -1. C++ 線上教材 因為執行效率與方便性(STL),通常程式競賽選手會使用 C++ 這個語言,而基本上競賽程式只會用到 C++ 一部分的語法,學到函式跟指標就夠用了(甚至指標大多數時候可以用陣列 + index 取代),class 之類物件導向的東西只打競賽的話其實可以先不用學太細(但要用別人模板時要能看懂)。 [code風景區 (code scenic): 給新手的C++教學 (上冊)](https://codingsimplifylife.blogspot.com/2016/04/c.html) by 2016 台灣 IOI 國手 [C++ 從 Zero 開始 - 板橋高中資訊社](https://sites.google.com/site/pcshic/cppzero) [從零開始的演算法競賽入門教學](https://emanlaicepsa.github.io/) by 2020 台灣 IOI 國手 [建中 2021 暑假資讀投影片[1] by 謝一](https://slides.com/thanksone/deck):可以讓稍微懂程式的人快速上手 C++ 跟資訊競賽。 ### 語法練習題單 [TCFSH CIRC Judge - 預設題庫](https://judge.tcirc.tw/Problems?tabid=DEFAULT#tab00) [TCFSH CIRC Judge - 基礎題庫](https://judge.tcirc.tw/Problems?tabid=BASIC#tab01) [高中生程式解題系統 - 教學題 tag](https://zerojudge.tw/Problems?tag=%E6%95%99%E5%AD%B8%E9%A1%8C) ## 0. 教材 ### 線上教材 #### APCS - AP325 - 從 APCS 實作題檢測三級到五級 吳邦一教授撰寫的免費 APCS 中文教材,特色是所有的習題都有附測資。 - [講義與習題測資](https://drive.google.com/drive/folders/10hZCMHH0YgsfguVZCHU7EYiG8qJE5f-m) - [臉書社團:APCS實作題檢測](https://www.facebook.com/groups/359446638362710) - [一中電腦資訊研究社 Online Judge 上的 AP325 題組](https://judge.tcirc.tw/Problems?tag=AP325):這裡的題目跟吳邦一教授無關,只是一中學生們為了方便讓人練習而把 AP325 附的測資放上 OJ 而已 - PythAPCS123:Python 程式設計從 APCS 實作 1 級到 3 級 吳邦一教授錄製的線上課程。給沒有基礎的Python初學者,以考到APCS實作題三級分為短期目標來設計的課程。 - [教學影片 YouTube 撥放清單](https://youtube.com/playlist?list=PLpmg1QLbgMuSIDOgOcwf0Fbbn2ZDR7s-X) - [講義所在位置](https://drive.google.com/drive/folders/1mnVdO2LHq7e4vesn6pt_R0-S6YWtz4Q4?usp=sharing ) - [PythAPCS45](https://www.youtube.com/playlist?list=PLpmg1QLbgMuRQXHRkX9iDHyAVIW1D6OJF):也是吳邦一教授錄製的免費的教學影片,內容為APCS實作四五級的考古題Python題解。 #### 台灣高中競賽 - 2018-2019板中校內資訊培訓講義:2019 板中資奧國手撰寫的講義。 https://sites.google.com/site/pcshic/zi-xun-pei-xun - 2016建中校內培訓講義:2017 建中資奧國手撰寫的講義。 https://tioj.ck.tp.edu.tw/articles/5 - 資訊之芽:一個資訊領域的推廣計畫,由台大跟清大同學當講師教高中生,投影片跟課程影片都有公開 - [2020 上課內容](https://www.csie.ntu.edu.tw/~sprout/algo2020/) - [2021 上課內容](https://www.csie.ntu.edu.tw/~sprout/algo2021/) - [官網](https://sprout.tw/spt/) - [粉絲專頁](https://www.facebook.com/ntucsiesprout) #### 英文教材 - 🇬🇧USACO Guide:美國資奧選手們做的好網站 https://usaco.guide/ - 🇬🇧Competitive Programmer's Handbook 英文教材,可以免費載 pdf https://cses.fi/book/index.html ### 實體書 - 算法竞赛入门经典 簡體 https://www.books.com.tw/products/CN11124942 繁體版:打下好基礎:程式設計與演算法競賽入門經典 https://www.books.com.tw/products/0010650143 中一中電研社辦書櫃應該有若干本(?) - 培養與鍛鍊程式設計的邏輯腦:世界級程式設計大賽的知識、心得與解題分享 [第二版] https://www.books.com.tw/products/0010616945 - 算法竞赛进阶指南 https://book.douban.com/subject/30136932/ - 🇬🇧Competitive Programming 4: The Lower Bound of Programming Contests in the 2020s https://cpbook.net/details ## 1. 推薦的練習平台 (Online Judge) - [高中生程式解題系統 - ZeroJudge](https://zerojudge.tw/):高師大附中老師架設的網站,使用者寫一定比例的題目就能在上面出題,所以想要在上面出題變得越來越困難(?)。優點是題目多,缺點也是題目多,要刷的話挑有難度一點的題目吧! - [TIOJ INFOR Online Judge](https://tioj.ck.tp.edu.tw/):建中資訊社的 OJ (我沒搞錯的話?),收集了台灣高中比賽的題目跟建中生或前國手(?)原創題,在 tag 或 contest 亂翻可以挖到寶(?) - [2019 IOICamp 的題目](https://tioj.ck.tp.edu.tw/problems/tag/IOIcamp) - [全國賽考古題](https://tioj.ck.tp.edu.tw/contests/46) - [~2018入營考考古題](https://tioj.ck.tp.edu.tw/contests/70) - [TOI模考古題](https://tioj.ck.tp.edu.tw/contests/71) - [OJ的啦](https://ojdl.ck.tp.edu.tw/):建中資毒 >< - 🇬🇧[🇫🇮CSES Problem Set](https://cses.fi/problemset/):刷過都說讚! - 2020 IOI 滿分第一名 [William Lin](https://stats.ioinformatics.org/people/6990) 的[刷題直播](https://youtu.be/dZ_6MS14Mg4) - 🇬🇧[CS Academy](https://csacademy.com/):刷過都說讚! - 🇬🇧🇵🇱[POI = Polish Olympiad in Informatics](https://szkopul.edu.pl/task_archive/oi/):現在在 SZKOpuł 這個 OJ 上。傳說拔到獅子的鬃毛,掉落的頭髮就能長回來,而刷完 POI,掉落的名次也能長回來喔 >< - 🇬🇧[OI Checklist](https://oichecklist.pythonanywhere.com/):因為這篇文 [Checklist for OI problems - Codeforces](https://codeforces.com/blog/entry/59422)而有人做的實用刷 OI 題目網站。 - 🇬🇧🇯🇵[AOJ (AIZU ONLINE JUDGE)](https://onlinejudge.u-aizu.ac.jp/):会津大学的 OJ,Courses 裡面模板題不錯,看得到測資。 - 💪😎🤳[Virtual Judge](https://vjudge.net/):不要點開,你會怕 - 有線上例賽的:基本上每週都有線上比賽可以打,沒有也可以 virtual contest,這類網站通常題目品質比較好,基本上都有題解 (tutorial/editorial) 可以看,且有 rating 機制,可以檢視自己的程度。但是高難度的原創好題一般會投到 IOI 或是各國 POI, USACO, JOI 之類的大比賽,所以只練這種網站的話可能會不小心走火入魔(?) - 🇬🇧🇷🇺[Codeforces ]( https://codeforces.com/):刷 CF 當手速狗有賺有賠,申購前應詳閱公開說明書。 ![](https://media.giphy.com/media/mCRJDo24UvJMA/giphy.gif) - 🇬🇧🇯🇵[AtCoder](https://atcoder.jp/):考驗你的思維高度! - [AtCoder Problems]( https://kenkoooo.com/atcoder/#/table/pr3pony):非官方的刷題工具 - [AtCoder Clans]( https://kato-hiro.github.io/AtCoderClans/):非官方的資源整理 - 🇬🇧[Topcoder](https://www.topcoder.com/community/competitive-programming/how-to-compete): 你想打這個可能要先花一天學習怎麼用他ㄉ網站或是 java applet 吧笑死,好像是最老ㄉ競程排位網站但是系統很老舊很不好用 ## 2. 建議的學習方法 - 來自 2021 台灣資奧銀牌[張程凱](https://stats.ioinformatics.org/people/7615)的建議:[IOI 準備心得 - HackMD](https://hackmd.io/Cd5AugwvQlmhrH-97O1PVw) - [我的未來, 自己寫: 17歲資奧金牌少年, 衝撞體制500天 | 大眾心理學 | 商品 | 誠品線上](https://www.eslite.com/product/1001128182640235):2016 台灣資奧金牌[何達睿](https://stats.ioinformatics.org/people/6038)寫的書,書裡有一部分是他的學習方法跟備賽策略,有興趣可以買來看。 - [AA 競程](https://aacpschool.com/)的 [dreamoon 老師](https://codeforces.com/profile/dreamoon_love_AA)在 2015 年寫的 [Codeforces blog - If you ask me how to improve your algorithm competition skill, I will give you the link of this blog.](https://codeforces.com/blog/entry/16599) - 來自本文作者 [pr3pony](https://clist.by/coder/pr3pony/) 的廢話 1. 挑一份教材 2. 把上面教的東西學起來 3. 刷題目或 virtual contest 4. 依據實際參加的比賽或模擬比賽,檢視自己的實力 5. 跟夥伴們討論題目 / 看題解 6. if 覺得有很多東西不會 goto 1. 7. goto 3. 8. live happily ever after ## Appendix ### TOI 代表隊遴選作業 想比資奧的話可以研究一下怎麼進選訓營 1! / 2! / 國手 [TOI 官網](https://toi.csie.ntnu.edu.tw/) [中華民國參加國際資訊奧林匹亞競賽代表隊遴選作業要點](https://drive.google.com/file/d/1OI5FrYxn47aw6z3GXNOogXJPAydB89Id/view) ### 演算法比賽網路資源整理 (沒錯這是遞迴(?)) - [台灣資訊培訓相關資源彙整](https://github.com/goodjack/awesome-cs-training):以台灣高中生為出發點的資訊培訓相關資源彙整 - [演算法筆記](https://web.ntnu.edu.tw/~algo/):內容主要是站長寫的演算法教學文章 - [Competitive Programming - 演算法筆記](https://web.ntnu.edu.tw/~algo/Activity.html#6):這裡整理了非常非常多資源,應該是我見過最專業且齊全的列表,還有介紹台灣大學程式競賽的概況,大學生或是社會人士對競程有興趣的很推薦把這裡瀏覽過一遍。([這是這個頁面 2020 的 web archive 連結](https://web.archive.org/web/20200212110118/http://www.csie.ntnu.edu.tw/~u91029/CompetitiveProgramming.html),因為演算法筆記有時會變動文章位置,所以留這個當備份連結) - [OI Wiki](https://oi-wiki.org/):中國選手的算法競賽 wiki 共筆,有不少寫得不錯的文章,也有很多很難的內容(?) - 🇬🇧[Awesome Competitive Programming](https://github.com/lnishan/awesome-competitive-programming): A curated list of awesome Competitive Programming, Algorithm and Data Structure resources - 🇬🇧[Algorithms for Competitive Programming](https://cp-algorithms.com/):本來是從俄文的 http://e-maxx.ru/algo 翻譯成英文的 project,但現在好像競程會用到的演算法你寫了文章都能投稿上去(?) ### 各種討論社群(?) #### [AC Discord Server](https://discord.com/invite/2CJ6qvY) - 英文社群 - 線上比賽賽後來這裡通常都能找到人討論 - 有個很好的 Codeforces chat bot 叫做 TLE,可以查很多統計資料(;plot),自動推薦你練習題目(;gitgud),跟別人單挑隨機一題誰比較快解出來(;duel)等等。用法請看這篇:[Presenting TLE: the best Codeforces bot for Discord - Codeforces](https://codeforces.com/blog/entry/68927) #### [野生的臺中一中資訊競賽培訓](https://www.facebook.com/groups/496064644359955/) 本文作者的自嗨用臉書社團(?) ### 統計資料網站 #### [Rating History](https://rating-history.herokuapp.com/index.html?handle_topcoder=prprprpony&handle_codeforces=pr3pony&handle_atcoder=pr3pony&handle_aoj=pr3pony&handle_yukicoder=pr3pony&handle_librarychecker=pr3pony&select_handle=pr3pony) #### clist.by:範例 [pr3pony - Coder - CLIST](https://clist.by/coder/pr3pony/)