Brief
Bài đăng này để nói về một hành trình tuyệt vời của team Chicken+ trên con đường trở thành nhà vô địch Thách Thức. Trong hành trình đó, tụi mình đã trải qua những cảm xúc khó tả, vui có, buồn có, thất vọng cũng có. Nhưng quan trọng nhất, là tụi mình đã có một cái kết đẹp.
Bên dưới, tụi mình sẽ chia sẻ tất tần tật mọi thứ về hành trình tụi mình đã trải qua, bao gồm lập team, chiến thuật và cảm xúc của tụi mình xuyên suốt hành trình này. (Bấm vào ảnh để xem chi tiết).
Trước kỳ thi
Bước vào kỳ thi năm nay, tụi mình đều xác định rằng đây sẽ phải là năm cuối cùng. Vì thế, mục tiêu là: “Vượt qua bản thân của năm ngoái” - cả về kiến thức, kỹ năng, sự gắn kết, và cả tinh thần, tâm lý thi đấu.
Tuy vậy, thời gian training của tụi mình là không nhiều. Team chỉ có thể train 1 buổi/tuần, chứ không được 3-4 buổi/tuần như năm ngoái.
Formation
Team Chicken+ có 7 thành viên:
- Nguyễn Quang Trường (K22 APCS)
- Trịnh Minh Huy (K23 APCS)
- Võ Khắc Triệu (K23 APCS)
- Vũ Quốc Lâm (K23 APCS)
- Bùi Huy Giáp (K23 CLC)
- Lê Cảnh Toàn (K23 HCMIU, dự bị)
- Đoàn Thiên Quý (K23 HCMUT, dự bị)
Trong đó 6/7 thành viên đều là cựu học sinh I2023 PTNK.
Xét ba topic lớn xuất hiện trong kỳ thi, team mình đều có những thành viên cover được, có thể kể đến:
- Lập trình thi đấu (Truy tìm lỗi ẩn, Lập trình tiếp sức):
- Võ Khắc Triệu (ICPC WF 49th)
- Vũ Quốc Lâm (ICPC WF 49th)
- Nguyễn Quang Trường (KK VOI 2022)
- General CS Knowledge (Khởi động, Ai thông minh hơn, Đối đầu trực tiếp):
- Bùi Huy Giáp
- Trịnh Minh Huy
- Nguyễn Quang Trường
- Bot/AI (Đấu trường AI):
- Bùi Huy Giáp (AI/ML)
- Võ Khắc Triệu (Heuristic/AI)
Nhờ đội hình đồng đều và vốn liếng training từ năm ngoái, tụi mình đã thể hiện tốt ở tất cả mọi vòng thi năm nay.
Vòng sơ loại
Khi đọc luật năm nay, tụi mình khá bất ngờ về việc có thêm 2 thành viên dự bị trong đội. Việc tìm kiếm thành viên dự bị trở nên khá khó khăn. Do đó, tụi mình quyết định mời hai người quen ở trường khác là Toàn và Quý, đều là hai cựu học sinh I2023 PTNK, giờ đang học HCMIU và HCMUT. Hai bro đã làm rất tốt khi đều 34+ điểm tại vòng sơ loại (Lúc này Lâm và Triệu đang ở Singapore).
Chiến thuật
Khởi động
Đội hình: Đội mình có nhiều chủ đề kiến thức: CS nói chung (Huy, Giáp, Trường), thuật toán (Triệu, Lâm, Trường), bóng đá (Triệu, Trường), game/wibu (Huy, Lâm)… Từ đó, chia thành 2 nhóm để phân bố đều kiến thức sang 2 bên.
Dữ liệu: Hầu hết các từ khóa của phần thi này đều tìm kiếm được trên mạng và được tổng hợp lại thành các spreadsheet Excel (vào tháng 4/2025). Để thử thách khả năng OSINT và web scraping của các bạn, tụi mình sẽ không tiết lộ bảng tổng hợp từ khóa.
Chiến thuật: Đây là chiến thuật cơ bản mà các đội đều áp dụng. Có các phương án để gợi ý từ khóa:
- Sử dụng định nghĩa (vd: OSI thứ 7 -> “Application Layer”, Android sau G -> “Honeycomb”)
- Liệt kê đến khi đúng (vd: 5 principles của OOP -> liệt kê toàn bộ trong “SOLID”)
- Từ đồng âm (vd: nước táo -> “CIDR”)
- Từ trái nghĩa (vd: trái với sequential -> “parallel”)
- Những thứ liên quan đến nhau (vd: môn cô Nhàn -> “database”, tư bản -> “as a Service”, TT của PTNK -> “Entropy”)
- Những thứ… không liên quan nhma vui (vd: Lê Bảo Hiệp -> “nameless”)
- Kết hợp các phương án trên (vd: Lain -> “wired” -> “wireless”, bàn phím của Bùi Hồng Đức -> “stenography” -> “steganography”)
- Chia để trị (vd: Lê Nguyễn Hữu … + …ventus + 5 mạng là Pen… -> Anjuta)
Trivia: Đây là phần tụi mình train rất nhiều ở TT2024 (dẫn đến overfit và ROI hơi kém). Train trò này thì không cần prep nhiều, nên tụi mình train phần này khi các phần khác đang prep. Lưu ý rằng rất dễ phạm quy nếu không để ý kỹ.
Lập trình tiếp sức
Đội hình: Đội mình có 2 WF (Triệu, Lâm), 1 KK VOI (Trường), 1 CF xanh lá (Huy), 1 mù (Giáp). Thứ tự mặc định là Giáp, Huy, Trường, Lâm/Triệu. Có thể swap Lâm/Triệu lên trước để dứt điểm sớm nếu bài đủ dễ. Với các bài không phải thuật toán, đảo ngược thứ tự để Giáp và Huy có thời gian giải quyết.
Chiến thuật:
- Giáp gõ template và I/O
- Huy cài đặt các bước tiền xử lý
- Trường tiếp tục cài đặt các thuật toán
- Lâm/Triệu hoàn thiện, rà soát lỗi
- Nếu có thể, suy nghĩ các test case khác
Trivia: Video “outro” của tụi mình tại CK TT2025 có đề cập rằng tụi mình mất chức vô địch TT2024 vì không bấm chuông. Từ đó, tại TT2025, tụi mình đã ưu tiên an toàn lên hàng đầu. Đây là phần tụi mình train ít nhất.
Truy tìm lỗi ẩn
Đây là phần thi mới của TT2025, và cũng là phần thi signature của tụi mình. Vì phần này quá dài, tụi mình sẽ làm bài riêng nói về nó.
Link part 2: https://demen100ns.github.io/2025/05/28/TT-part2.html
Ai thông minh hơn & Đối đầu trực tiếp
Đội hình: Huy, Giáp, Trường ngồi ở trước, tập trung trả lời câu hỏi. Lâm và Triệu đứng ở sau, phụ các câu thuật toán, tính toán điểm và chiến thuật.
Chiến thuật: Không có chiến thuật cụ thể. Tụi mình dùng cả 2 bàn phím: Trường dùng phím rời, Giáp dùng phím laptop. Với ATMH, Lâm thường chọn ô ở rìa, không mở trung tâm sớm. Với ĐĐTT, tấn công thủ đô càng sớm càng tốt khi còn mở (ở BK TT2025, tụi mình tấn công thủ đô bằng cách lụi câu hỏi yes/no).
Trivia:
- Tại CK TT2025, tụi mình bị kiệt sức khá nhiều sau TTLA nên tư duy và phản xạ kém đi đáng kể.
- Tụi mình đoán được từ khóa ATMH của CK TT2025. Tuy nhiên, vì chần chừ và còn nhiều thứ để mất nên không dám nhấn chuông.
Đấu trường AI
Có nhiều chiến thuật được đưa ra: RL, Hill Climbing… nhưng cuối cùng thuật được chọn là… DeMenUltimate - một thuật heuristic.
Bot tụi mình bắt đầu thi đấu bằng một nước đi đặc biệt: Hwi Opening. Cũng giống như trong cờ vua, Huy sẽ premove hết vài (chục) nước đầu của map, sau đó thì DeMenUltimate mới hoạt động.
DeMenUltimate: Thuật này mô tả trong một dòng: Xét mọi đường đi ngắn nhất, tìm đường đi ngắn nhất có giá trị trung bình lớn nhất.
6 nước cuối cùng: Tụi mình quyết định bắn tên lửa trong 6 lượt cuối, ngoài ra, nước đi của tụi mình sẽ là: Đứng yên - di chuyển random (lặp lại 3 lần).
BTC có yêu cầu bot phải được static link hoàn toàn. Việc này yêu cầu bot phải được cài cẩn thận, không có undefined behavior (đặc biệt là với tính năng OS-specific như I/O). Lưu ý là trên Ubuntu, flag -static vẫn sẽ dynamic link glibc. Giải pháp của team mình là link với musl.
Intro nhưng lại là Outro
Đội có nghĩ đến ý tưởng quay video intro từ khá sớm. Một số ý tưởng bao gồm: các cảnh hành động ở Singapore, nằm xem review phim, FOV (giống CLCsCan), intro Blend S…
Giáp nảy ra ý tưởng parody intro Evangelion. Tuy nhiên, công sức edit cực khổ level max nên chuyển sang chọn các phân đoạn tiêu biểu của phim (Giáp có cân nhắc cả cảnh… bệnh viện, iykyk).
Đội hình sẽ tan rã sau TT2025 (bất kể vô địch hay không), nên cả đội quyết định làm “outro” cho chuyến hành trình 2 năm. Evangelion có các ending mang tính triết lý và phần credit rất iconic. Nội dung “outro” của đội chính là sự thay đổi trong tâm lý của đội: không còn khát khao chiến thắng tột độ, tinh thần của đội trở nên thoải mái hơn, tận hưởng niềm vui khi ở cùng nhau (đi thi mà toàn cười như mấy thằng hề).
Trivia:
- Toàn bộ việc lên ý tưởng cuối và thực hiện quay được hoàn thành trong 1 buổi trưa
- Các đội được credit là các đội từng đấu hoặc đấu tập với Insect/Chicken+ (ngoại trừ Seno và TGB ở vai trò phù hộ)
- Có hai người bị trùng voiceline (Giáp, Lâm)
- Toàn là người duy nhất có voiceline nữ (Asuka)
- Buổi quay là buổi duy nhất mà Quý xuất hiện với cả đội trước trận CK TT2025 (đến CK thì Quý mới biết luật của các trò chơi TT)
- Intro của Insect và outro của Chicken+ có chung 1 easter egg :>
Tổng kết
Chức vô địch này thật sự ý nghĩa đối với tụi mình, là một kết quả mà tụi mình đã chờ đợi hơn một năm kể từ ngôi á quân Thách Thức 2024.
Tuy vậy, thứ khiến mình vui nhất là những buổi train chung với nhau (mà chủ yếu là xem review phim và ăn bún bò). Thời lượng train mỗi tuần chỉ có 4-8 tiếng ngắn ngủi, không bỏ học để đi train mà cũng chẳng train sớm trước vài tháng. Vậy mà những lúc như vậy lại vui hơn cả lúc vô địch.
