SIU AUTUMN TOUR TEST SYSTEM Tutorial

SIU AUTUMN TOUR TEST SYSTEM Tutorial - No Code

dsaThái Hồ Phú Gia08/10/2025~4 phút đọc837 chữ0 lượt xem0 thích

SIU AUTUMN TOUR TEST SYSTEM

Tutorial

A. Phép Cộng

Hint: Đọc hai số nguyên A, B từ stdin, in ra A + B vào stdout.
Giải thích: Bài khởi động I/O: dữ liệu vào cùng dòng, cách nhau bởi dấu cách; chỉ được dùng chuẩn nhập/xuất, không in thêm chữ. Với ràng buộc nhỏ (0 ≤ A, B ≤ 10) nên không lo tràn số, cũng không cần xử lý định dạng đặc biệt

B. Nước đi của quân Xe

Hint:

  • Bàn cờ 8×8, ô ký hiệu “cột a..h + hàng 1..8” (ví dụ e5).
  • Với vị trí cột = c, hàng = r của quân Xe, liệt kê mọi ô:
    • Cùng cột c: c1..c8, bỏ cr.
    • Cùng hàng r: a r .. h r, bỏ cr.
  • In đúng định dạng “chữ + số”. Thứ tự tùy ý (trừ khi đề yêu cầu khác).

Giải thích chi tiết:

  • Chuyển chữ cột (‘a’..‘h’) sang chỉ số 1..8 (hoặc làm việc trực tiếp với ký tự).
  • Duyệt 8 hàng để lấy các ô theo cột; duyệt 8 cột để lấy các ô theo hàng.
  • Bỏ trùng chính ô hiện tại.
  • Không có quân cản, nên mọi ô cùng hàng/cột đều hợp lệ.
  • Độ phức tạp O(8 + 8) cho mỗi test (hằng số).

Lưu ý dễ sai:

  • Đừng in lại ô ban đầu.
  • Giữ đúng chữ thường cho cột (a..h) và số hàng (1..8).

C. Món quà sinh nhật

Bài toán: Có dãy chữ số a1..an (0..9). Ta được chọn đúng một chữ số để cộng thêm 1. Hỏi tích lớn nhất đạt được sau thao tác đó.

Hint chiến lược:

1.      Nếu có ≥ 2 số 0: Dù cộng 1 cho một trong số đó, vẫn còn ít nhất một số 0 → tích = 0.

2.      Nếu có đúng 1 số 0: Tốt nhất là tăng số 0 lên 1. Tích khi đó = tích của các phần tử khác (vì 0→1).

3.    Nếu không có số 0: ta muốn chọn phần tử i để nhân tích với hệ số . Hệ số này càng lớn khi càng nhỏ. Vậy chỉ cần chọn chữ số nhỏ nhất trong dãy để +1.

Giải thích toán học ngắn:

  • Tích sau khi tăng vị trí i: (nếu ).
  • Với chữ số 1..9, giảm dần theo a (ví dụ 2.0, 1.5, 1.33…, 1.11…).
  • Trường hợp có 0 cần tách riêng vì công thức trên không áp dụng (chia cho 0).

Bẫy:

  • Tăng số 9 thành 10 là hợp lệ (đề không cấm), và thường rất tốt khi mọi chữ số đều là 9 → kết quả = .
  • Tích có thể lớn: dùng kiểu số lớn (nhưng ở đây bạn chỉ viết ý tưởng, không code).

D. Trò chơi 1

Mô tả rút gọn: Hai người lần lượt cộng hoặc trừ 1 vào n; Nhi đi trước. Chơi tối ưu. (Giới hạn “10 lượt” về bản chất không ảnh hưởng kết quả chiến lược.) Hỏi ai thắng.

Kết luận nhanh:
Kết quả phụ thuộc vào n mod 3:

  • Nếu Second thắng.
  • Ngược lại First thắng.

Vì sao đúng (trực giác ngắn):

  • Các vị trí mà người sắp đi thua là bội số của 3. Từ đó, mọi nước đi (±1) đều đưa đối phương đến trạng thái , và đối phương có thể ngay lập tức đẩy lại về bội số của 3, duy trì bất lợi cho bạn.
  • Nếu ban đầu , First có thể đi một bước để biến n thành bội số của 3, đẩy Second vào thế thua.

Cách kiểm:

  • Thử vài giá trị: 1→First, 2→First, 3→Second, 4→First, 5→First, 6→Second, v.v.

E. Cuộc họp

Bài toán: Có N người phát biểu, mỗi người nói bằng nhau x phút, giữa hai người liên tiếp nghỉ 1 phút. Tổng thời lượng không vượt quá K phút. Hãy tìm x lớn nhất (x là số nguyên, và ít nhất 1 phút).

Công thức:

  • Tổng thời gian = (vì có N−1 khoảng nghỉ).
  • Điều kiện: .
  • Suy ra: .

(Theo đề, nên giá trị trong ngoặc luôn ≥1; viết chỉ để nhấn mạnh ràng buộc “ít nhất 1 phút”.)

Bẫy:

  • Đừng quên N−1 phút nghỉ.
  • Lấy floor (chia lấy phần nguyên xuống).
  • I/O: N và K nằm ở hai dòng khác nhau.
  •  

F.  Cần 9 số 0

Hint:
Duyệt từng phần tử trong dãy, kiểm tra xem giá trị (a[i] + 9) có tồn tại trong dãy ban đầu hay không.

  • Nếu không tồn tại, tăng biến đếm kết quả lên 1.
  • Nếu tồn tại, bỏ qua.

Có thể dùng STL set/map hoặc sắp xếp + tìm kiếm nhị phân để kiểm tra nhanh.

Giải thích:

  • Ta cần xác định số phần tử mà “sau khi cộng 9” không còn xuất hiện trong dãy.
  • Ví dụ: dãy [1, 10, 19] →
    • 1+9=10 (có),
    • 10+9=19 (có),
    • 19+9=28 (không có) kết quả = 1.

Độ phức tạp:

  • Dùng set hoặc sắp xếp → tìm kiếm nhị phân mỗi phần tử: O(n log n).

 

Thông tin

Chủ đề
dsa
Người đăng
Thái Hồ Phú Gia
Ngày
08/10/2025
Đọc
~4 phút
Xem
0
Thích
0

Mục lục

Bình luận

Tính năng bình luận sẽ sớm ra mắt.