แนวทางการฝึกด้วยตัวเอง
อ้างอิงเนื้อหาตามลำดับของค่าย สอวน. เพราะเป็นแนวทางหลักในเส้นทางการเขียนโปรแกรมเชิงแข่งขัน
สำหรับก่อน สอวน. ค่าย 1
ถ้าไม่เคยเขียนภาษา C++ มาก่อน แนะนำให้เริ่มจาก C++ Language Tutorial แล้วต่อด้วย Competitive Programmer’s Handbook ซึ่งเป็นหนังสือหลักของคู่มือนี้
เป้าหมายของช่วงนี้คือเขียนโปรแกรมพื้นฐานได้คล่อง
input/output
if/else และ loop
array และ string
function
recursion แบบง่าย
ควรฝึกโจทย์ที่ไม่ต้องใช้อัลกอริทึมซับซ้อนก่อน เพื่อให้ชินกับการอ่านโจทย์และ debug
สำหรับ สอวน. ค่าย 1
หัวข้อที่ควรมั่นใจ
C++ syntax และ STL พื้นฐาน เช่น
vector,pair,sortการคิด brute force และ simulation
recursion
time complexity เบื้องต้น
การจัดการ array และ string
วิธีฝึกที่แนะนำคือเลือกโจทย์ง่ายวันละ 2-3 ข้อ แล้วหลังทำเสร็จให้จดว่าโจทย์นั้นใช้ pattern อะไร
สำหรับ สอวน. ค่าย 2
หัวข้อหลักจะเริ่มเป็น data structures และ algorithms
stack, queue, priority queue
set, map, hash table
tree และ graph representation
BFS/DFS
binary search
greedy
dynamic programming เบื้องต้น
ในช่วงนี้ควรเริ่มอ่านเฉลยหลังพยายามเองพอสมควร เพราะสิ่งสำคัญคือการสะสม pattern ของโจทย์
สำหรับขั้นต่อไป
อ่านเพิ่มเป็นหัวข้อ
USACO Guide เนื้อหาเรียงตามระดับ พร้อมโจทย์
CP-Algorithms อธิบายอัลกอริทึมละเอียดพร้อม implementation
Principles of Algorithmic Problem Solving (เนื้อหาซ้อนกับ Competitive Programmer’s Handbook บางส่วน)
การออกแบบและวิเคราะห์อัลกอริทึม โดย อ.สมชาย ประสิทธิ์จูตระกูล
เว็บไซต์ทำโจทย์ (graders)
CSES Problem Set ชุดโจทย์คู่กับหนังสือหลัก เรียงตามหัวข้อ
programming.in.th เว็บหลักในไทย มีโจทย์ TOI และ สอวน.
OTOG เว็บที่นักเรียน สอวน. ช่วยกันทำ
Codeforces แข่งออนไลน์สม่ำเสมอ เหมาะฝึกความเร็ว
AtCoder โจทย์คุณภาพดี ใช้คู่กับ AtCoder Problems เพื่อเลือกโจทย์ตามระดับ
สำหรับค่าย สสวท.
เอกสารค่าย สสวท. (ThailandOI) รวมเอกสารและลิงก์จากค่ายตุลาและค่ายมีนาแต่ละปี
บท Advanced Data Structures, DP Optimization และ Max Flow, Matching และ FPT ในคู่มือนี้ สรุปจากสไลด์ที่ใช้สอนในค่าย
วิธีใช้เวลาอ่านเฉลย
อ่านเฉพาะ idea ก่อน อย่าเพิ่งดู code
ปิดเฉลยแล้วลอง implement เอง
ถ้าติด ให้เทียบเฉพาะส่วนที่ต่าง
หลังผ่านแล้ว ให้เขียนสรุป 2-3 บรรทัดว่าโจทย์นี้สอน pattern อะไร
Checklist การฝึก
ทำโจทย์ง่ายให้เร็วและถูกก่อนเพิ่มความยาก
หลัง contest ให้ upsolve ข้อที่ทำไม่ได้อย่างน้อย 1 ข้อ
เก็บ template ที่ใช้บ่อย แต่ต้องเข้าใจทุกบรรทัด
วัดความก้าวหน้าจากจำนวน pattern ที่จำได้ ไม่ใช่จำนวนโจทย์อย่างเดียว