SIU AUTUMN TOUR WEEK 2 #2 Tutorial

SIU AUTUMN TOUR WEEK 2 #2 Tutorial - No Code

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

SIU AUTUMN TOUR WEEK 2 #2

Tutorial

A. Khảo sát trái cây

Category. Đếm/constructive (bài toán cực trị theo cột).

Hint. Trong một lớp, mỗi học sinh chỉ được tính một lần cho “thích một loại quả nào đó”. Vì thế số học sinh tối thiểu của lớp đó không thể nhỏ hơn số học sinh nhiều nhất đang thích một loại quả trong lớp ấy.

Solution. Với mỗi lớp (tương ứng một cột), đáp án tối thiểu chính là giá trị lớn nhất của các tần suất “thích” theo từng loại quả trong cột đó. Lý do: ta có thể luôn hiện thực hoá cấu hình tối ưu bằng cách sắp xếp học sinh theo thứ tự  và để học sinh thứ  chọn những loại quả có tần suất ; như vậy không có ai bị đếm hai lần và số học sinh cần có đúng bằng cực đại theo cột. Đáp án chung là tổng các cực đại của tất cả các cột.

Complexity. Duyệt lấy max theo cột: .

B. Cân bằng xiên nướng

Category. Xác suất – tổ hợp nhị phân (đếm đường đi ).

Hint.

  • Có hai bộ đếm  (ban đầu ). Với mỗi , chọn ngẫu nhiên chỉ số bắt đầu , rồi phân bổ luân phiên đơn vị vào
  • Nếu  chẵn  mỗi bên nhận đúng    không đổi.
  • Nếu  lẻ:
    • bắt đầu ở    tăng ,  tăng    tăng ;
    • bắt đầu ở    giảm .

Solution. Gọi  là số lượng  lẻ. Bài toán rút gọn thành thực hiện  phép cộng độc lập, mỗi phép biến thiên hiệu   hoặc  với xác suất .
Ta cần xác suất để
 sau  bước:

  • Nếu  chẵn: cần đúng số lần  bằng   số cách hợp lệ .
  • Nếu  lẻ: tổng cuối là . Số cách .

Xác suất yêu cầu:

(vì các  chẵn không ảnh hưởng đến hiệu).

Complexity. Tiền xử lý đếm  và tính tổ hợp:  cho duyệt dữ liệu (  chi phí tổ hợp, có thể tiền xử lý factorial hoặc dùng công thức/tiện tính theo ràng buộc ).

C. Buổi trà thư giãn

Category. Quy hoạch động trên đoạn (interval DP).

Hint. Uống các cốc từ một dãy; trạng thái “còn lại” luôn là một đoạn liên tiếp. Khi biết biên trái–phải của đoạn còn lại, ta khôi phục được số cốc đã uống.

Solution. Đặt  giá trị (hoặc tổng hạnh phúc/điểm) tốt nhất khi còn đoạn . Ở mỗi bước chỉ có  chuyển tiếp: uống cốc trái nhất hoặc phải nhất của đoạn còn lại, rồi cập nhật sang  hoặc . Duyệt theo độ dài đoạn từ ngắn đến dài để đảm bảo các trạng thái con đã có trước khi tính trạng thái lớn hơn. Kết quả là .

Complexity. Số trạng thái , mỗi trạng thái 2 chuyển tiếp  thời gian,  bộ nhớ (có thể tối ưu tuỳ bài).

D. Người sống sót

Category. Tham lam với sắp xếp (greedy + sorting).

Hint. Mỗi người “sống sót” cần dùng một số lần kỹ năng (hoặc tài nguyên) nhất định. Nếu ta luôn ưu tiên người cần ít tài nguyên hơn trước, số người cứu được sẽ tối đa.

Solution. Tính cho từng người số lần sử dụng kỹ năng cần thiết để cứu họ (lưu ý dùng kiểu số đủ lớn, ví dụ long long). Sắp xếp các giá trị này tăng dần rồi lấy lần lượt cho đến khi không đủ tài nguyên/budget nữa; đếm số người đã lấy. Đây là chiến lược chuẩn kiểu “nhặt đồ rẻ trước” để tối đa hoá số lượng.

Complexity. Tính nhu cầu: ; sắp xếp: ; duyệt tích luỹ: .

E. Đồ thị tối giản

Category. Đếm cấu hình đồ thị theo khoảng cách (combinatorics on levels/BFS layers).

Hint.

  • Sắp xếp/nhóm các đỉnh theo khoảng cách từ đỉnh : lớp
  • Với đồ thị “tối thiểu”, mỗi đỉnh ở lớp  phải có chính xác một cạnh nối tới một đỉnh ở lớp  (đảm bảo có đường đi và tránh dư thừa).

Solution. Đếm số đỉnh theo từng lớp. Với lớp , gọi  là số đỉnh ở lớp   là số đỉnh ở lớp .
Nếu tồn tại lớp
  nhưng   không thể kết nối  đáp án .
Ngược lại, mỗi đỉnh của lớp
 chọn một “cha” trong lớp    cách. Nhân tất cả các lớp:  (kèm mô-đun nếu đề yêu cầu). Việc tính  làm được bằng sắp xếp/đếm.

Complexity. Sắp xếp/đếm theo khoảng cách:  hoặc  nếu đã có mảng khoảng cách; phép nhân lặp: .

F. Tái tạo số

Category. Xây dựng (constructive) – toán nhị phân.

Hint. Biết   đều có đúng  bit “1” và  bit “0” (độ dài ); biết thêm   bit “1”. Cần chỉ ra điều kiện tồn tại và cách dựng  theo .

Solution.

  • Kết luận chuẩn: nếu   thì tồn tại khi và chỉ khi .
  • Một cách dựng điển hình (khi ): cố định

  • Nếu : đặt  có dạng

            (trực giác: “chen” một số lượng mượn–mang để tạo đúng  bit “1” trong ).

  • Nếu : đặt

  • Trường hợp biên  hoặc  xử lý riêng (ràng buộc  tương ứng). Lập luận mượn/không mượn theo từng khối đảm bảo  có đúng  bit “1” và độ dài .

Complexity. Dựng trực tiếp theo khối: .

 

Thông tin

Chủ đề
dsa
Người đăng
Thái Hồ Phú Gia
Ngày
21/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.