cpp-077Đọc toàn bộ đề miễn phí

Lý thuyết trò chơi: Định lý Sprague-Grundy và Trò chơi Nim

G(u) = mex{G(v) | u → v}

C++Nâng cao45 phút

Tiến độ của tôi ở bài này

Điểm được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

game theorysprague grundynimmex

Kiến thức tiên quyết: game theory basics, bitmask xor.

Nội dung đề bài

Mục tiêu kiến thức

  • Nắm vững định lý Sprague-Grundy: Mọi trò chơi không thiên vị (Impartial Game) ở trạng thái chuẩn tắc (Normal play convention) đều tương đương với một đống sỏi trong trò chơi Nim với số lượng sỏi bằng giá trị Grundy G(u).
  • Hàm Grundy định nghĩa theo hàm mex (Minimum Excluded value):

G(u) = mex{G(v) | u → v}

  • Tính chất hợp trò chơi: Giá trị Grundy của hợp các trò chơi con độc lập bằng tổng XOR của các giá trị Grundy thành phần: G = G1 oplus G2 oplus … oplus GK.
  • Người đi trước thắng khi và chỉ khi G > 0.

Mô tả bài toán

Có N đống sỏi, đống thứ i ban đầu có Si viên sỏi. Ở mỗi lượt đi, một người chơi chọn một đống sỏi có ít nhất 1 viên và bốc đi một số viên sỏi. Tuy nhiên, mỗi lần bốc chỉ được phép bốc một số viên sỏi thuộc tập hợp cho phép P = {p1, p2, …, pM} (không được bốc quá số sỏi hiện có trong đống). Người không thể thực hiện nước đi hợp lệ nào nữa là người thua cuộc (Normal play). Hai người chơi Alice và Bob luân phiên đi, Alice đi trước. Cả hai đều chơi tối ưu. Hãy xác định ai là người chiến thắng.

Quy ước nộp bài

  • Chỉ cần viết một chương trình đọc stdin và in ra stdout. Bài này không yêu cầu viết hàm.
  • Không dùng cout để in lời nhắc trước khi đọc dữ liệu. Lời nhắc sẽ lọt vào stdout và làm bài sai.
  • Chỉ in đúng nội dung ở mục Output. Không in thêm nhãn, dòng trống hay ký tự thừa.
  • Output được so khớp từng ký tự, phân biệt chữ hoa/thường và dấu câu.

Input

  • Dòng 1: Gồm 2 số nguyên N, M (1 ≤ N ≤ 105, 1 ≤ M ≤ 100).
  • Dòng 2: M số nguyên phân biệt p1, p2, …, pM (1 ≤ pi ≤ 100).
  • Dòng 3: N số nguyên S1, S2, …, SN (1 ≤ Si ≤ 105).

Output

  • In ra Alice nếu Alice thắng, ngược lại in ra Bob.

Ràng buộc

  • 1 ≤ N, Si ≤ 105.
  • Thời gian: 1000ms. Bộ nhớ: 256MB.

Ví dụ 1

Input

3 2
1 3
2 4 5

Output

Alice
3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.