canuc80k5304·5/50

Bộ Luật Chung

Nộp bài trên LQDOJ

Bài 5.4 · Sprague Grundy Theorem

Một bộ luật là một tập các số nguyên dương. Trong một ván, có nhiều đống sỏi và hai người chơi luân phiên. Mỗi lượt chọn đúng một đống rồi lấy khỏi đống đó đúng viên với một giá trị , miễn là đống còn ít nhất viên. Người không thể đi sẽ thua.

Mỗi bộ luật được dùng cho nhiều vị trí ban đầu. Với từng vị trí, hãy xác định người chơi thứ nhất có chiến lược thắng hay không.

Input

  • Input gồm nhiều bộ luật. Mỗi bộ luật có dạng:
  • Một dòng chứa số nguyên . Nếu , input kết thúc.
  • Một dòng chứa số nguyên dương phân biệt, là các phần tử của .
  • Một dòng chứa số nguyên , là số vị trí cần xét.
  • Mỗi dòng trong dòng tiếp theo bắt đầu bằng số nguyên , sau đó là số nguyên , là kích thước các đống của vị trí đó.

Output

  • Với mỗi bộ luật, in một dòng gồm đúng ký tự. Ký tự thứ là nếu người chơi thứ nhất thắng ở vị trí thứ ; ngược lại ký tự đó là L.

Constraints

  • Với mỗi bộ luật:
  • .
  • với mọi ; các giá trị trong đôi một khác nhau.
  • .
  • cho mỗi vị trí.
  • .

Scoring

  • Subtask ( số điểm): Mỗi file có không quá bộ luật; với mỗi bộ luật, , mọi và mọi .

  • Subtask ( số điểm): Không có giới hạn bổ sung.

Example

Test 1

Input

3
1 3 4
4
1 2
2 1 2
2 3 4
3 2 2 2
2
2 5
3
1 1
1 2
2 2 2
0

Output

LWWL
LWL

Giải thích: Với bộ luật đầu, Grundy của các đống lần lượt là , nên bốn xor cho kết quả LWWL. Với bộ luật , các vị trí [1], [2], lần lượt là thua, thắng, thua.

Lời giải tóm tắt
  • Ý tưởng: \
  • Phân tích: Với một bộ luật S, Grundy của một đống thỏa g(0)=0 và g(x)=mex{g(x-d) | d thuộc S, d≤x}. Mỗi vị trí gồm các đống độc lập, nên Grundy toàn vị trí là xor các g(h_i).
  • Thuật toán: Với từng bộ luật, tìm kích thước đống lớn nhất xuất hiện trong các truy vấn và tính bảng Grundy tới giá trị đó. Dùng mảng đánh dấu để lấy mex. Với mỗi vị trí, xor Grundy của các đống; ghi W nếu xor khác 0, nếu không ghi L.
  • Chứng minh đúng: Các nước đi từ đống x chính xác là các đống x-d hợp lệ, nên recurrence mex tính đúng Grundy của từng đống. Định lý Sprague-Grundy nói tổng rời có Grundy bằng xor các thành phần. Vì trạng thái thua đúng khi Grundy bằng 0, mỗi ký tự mà thuật toán in là chính xác.
  • Độ phức tạp: Với một bộ luật, gọi H là kích thước đống lớn nhất và Q là tổng số đống trong các vị trí. Thời gian O(Hk + Q), bộ nhớ O(H+k).