教材內容一覽
由三重商工資料處理科林易民老師與陳勝舢博士共同製作。內容以滾動式方式持續新增, 建議依下列順序循序學習。
以「全國高級中等學校學生商業類技藝競賽-程式設計職種」為目標的 Python 培訓課程, 涵蓋基礎語法、演算法與時間複雜度、競賽解題技巧、DOMjudge 線上評測與歷屆試題。
由三重商工資料處理科林易民老師與陳勝舢博士共同製作。內容以滾動式方式持續新增, 建議依下列順序循序學習。
在瀏覽器中直接開啟的視覺化講解,適合搭配教材延伸學習或課堂簡報使用。
依編號循序漸進,從基礎語法到競賽常用的內建函式與資料結構。
| 編號 | 主題 |
|---|---|
| 0 | 基礎語法:f-string、Packing/Unpacking、Shallow/Deep Copy |
| 0 | 時間複雜度入門:泡沫排序 vs 合併排序 |
| 1 | C/C++ 與 Python 執行速度比較 |
| 2 | 程式撰寫風格與原則 |
| 3 | 遞迴基礎 |
| 4 | 等差/等比數列與 GCD/LCM |
| 5 | 快速 I/O(sys.stdin)技巧 |
| 6 | 常見效能寫法比較 |
| 7 | map 內建函式 |
| 8 | zip 內建函式 |
| 9 | functools.cache / lru_cache 與動態規劃 |
| 10 | reduce + lambda |
| 11 | filter 內建函式 |
| 12 | bisect 二分搜尋模組 |
| 13 | collections.defaultdict |
| 14 | collections.OrderedDict |
| 15 | 進位轉換 |
| 16 | 浮點數精度與 Decimal |
| 17 | set 集合操作 |
| 18 | List 與 List Comprehension |
| 19 | List 插入代價與前綴和(Prefix Sum) |
| 20 | 佇列、堆疊與 deque |
| 21 | 二元樹(Binary Tree) |
| 22 | collections.Counter |
| 23 | sorted()、sort() 與自訂比較函數 |
| 24 | 排列、組合與位元運算 |
| 25 | math 模組、GCD 與質數 |
| 26 | itertools.product 笛卡兒積 |
| 27 | heapq 堆積與優先佇列 |
| 28 | calendar.isleap 與三參數 pow() |
每題可直接以同名 .zip 匯入 DOMjudge 使用。
數列判斷與浮點數處理。
階乘與迴圈。
Fibonacci 數列與門檻搜尋。
最大公因數與最小公倍數。
遞迴與步驟定位。
114 學年度商業類技藝競賽程式設計術科的 19 題(A~S),每題皆為標準 DOMjudge / Kattis 題目包,含樣本與秘密測資、時間限制與 Python 標準解。 全部 304 筆測資均以標準解驗證通過(最慢一筆 0.42s)。
DOMjudge 管理介面 → Problems → Import problem,選 A.zip~S.zip(可一次多選),再選要匯入的 contest。
problems.zip 內含 19 個題目 zip,供支援「zip of zips」的版本批次匯入;若失敗改用逐題上傳。
題目 PDF、domjudge-problem.ini、problem.yaml、data/sample 與 data/secret 測資,及 submissions/accepted 標準解。
| 題 | 題名 | 測資數 | 時限 |
|---|---|---|---|
| A | 西元年 | 17 | 3s |
| B | 負數轉為正數 | 21 | 3s |
| C | 奇數 | 20 | 3s |
| D | 奇數加總 | 7 | 3s |
| E | 數字翻轉 | 25 | 3s |
| F | hello | 22 | 3s |
| G | 字串 | 18 | 3s |
| H | 棒打老虎雞吃蟲 | 26 | 3s |
| I | 提款卡密碼 | 24 | 3s |
| J | IPv4 地址轉換 | 24 | 3s |
| K | 電話客服中心 | 30 | 3s |
| L | 投資收益 | 8 | 5s |
| M | Fibonacci 費氏數列 | 8 | 5s |
| N | 二維點排序 | 10 | 8s |
| O | 質數 Emirp | 7 | 8s |
| P | 質因數之和 | 6 | 5s |
| Q | 完全平方數 | 7 | 5s |
| R | 最小路徑 | 14 | 3s |
| S | 最小生成樹 | 10 | 10s |
時限以 Python 標準解為基準放寬;若比賽只收 C/C++ 可再往下調(1~2s 亦相當寬鬆)。 詳細各題注意事項請見 domjduge_pastexam/README.md。
各 .ipynb 可直接以 Jupyter Notebook、JupyterLab 或 VS Code 開啟閱讀與執行。
0_python_basics 開始,依編號讀完基礎語法、時間複雜度、遞迴、快速 I/O 與效能寫法,建立競賽所需的觀念與手感。
map/zip/bisect/heapq、collections 家族與 lru_cache 等,這些是縮短解題時間的關鍵工具。
algorithm/)
以階乘、費波那契、河內塔、DFS、BFS 練習迴圈、遞迴與圖形搜尋的基本套路。
contest_template/ 的 stdin/讀檔模板,並閱讀 domjudge_manual/ 熟悉登入、提交與積分板操作。
domjudge_practices/)
匯入 5 題練習題的 .zip,從數列、階乘、GCD/LCM、河內塔等主題累積提交經驗。
domjduge_pastexam/)
以 114 術科 A~S 共 19 題進行完整模擬,先攻 A~K 的基礎題,再挑戰 L~S 的數學與圖論題,並比對標準解。