canuc80k5302·3/50

Bóng Trên Bậc Thang

Nộp bài trên LQDOJ

Bài 53 · Sprague Grundy Theorem

Một cầu thang có bậc, đánh số từ ở dưới lên ở trên. Bậc đang chứa quả bóng. Hai người chơi luân phiên thực hiện thao tác sau:

  • Chọn một bậc đang có bóng.
  • Chuyển một số lượng dương tùy ý bóng từ bậc xuống bậc .

Bóng ở bậc không thể di chuyển tiếp. Người không còn thao tác hợp lệ sẽ thua. Với mỗi ván, hãy xác định người thắng khi cả hai chơi tối ưu.

Input

  • Dòng đầu chứa số nguyên , là số ván.
  • Mỗi ván gồm hai dòng:
  • Dòng thứ nhất chứa số nguyên .
  • Dòng thứ hai chứa số nguyên .

Output

  • Với mỗi ván, in first nếu người chơi thứ nhất thắng; ngược lại in second.

Constraints

  • .
  • cho mỗi ván.
  • .
  • Tổng của tất cả các ván không vượt quá .

Scoring

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

Example

Test 1

Input

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

Output

second
first

Giải thích: Ở ván đầu, người thứ hai đáp lại theo cặp: một lượng bóng được chuyển vào bậc hoặc sẽ được chuyển tiếp đúng lượng đó xuống bậc dưới, còn một lượng bị chuyển khỏi bậc hoặc sẽ được bắt chước ở bậc chẵn còn lại; vì hai bậc này ban đầu cùng có bóng, thế đối ứng được giữ đến cuối. Ở ván sau, người thứ nhất chuyển bóng từ bậc xuống bậc , làm hai bậc và cùng còn bóng, rồi dùng chính chiến lược đối ứng ấy.

Lời giải tóm tắt
  • Ý tưởng: \
  • Phân tích: Giá trị Grundy của toàn cầu thang bằng xor lượng bóng ở các bậc chẵn p_2 xor p_4 xor .... Một nước đi luôn thay đổi đúng một đại lượng trong xor này: xuất phát từ bậc chẵn thì đại lượng đó giảm, còn xuất phát từ bậc lẻ thì bậc chẵn ngay dưới tăng.
  • Thuật toán: Đọc dãy và xor các phần tử có chỉ số chẵn. In first nếu xor khác 0, ngược lại in second.
  • Chứng minh đúng: Gọi xor hiện tại là X. Không nước đi nào giữ nguyên X, vì đúng một số hạng của xor thay đổi. Khi X != 0, tính chất chuẩn của Nim cho phép chọn một bậc chẵn và giảm lượng bóng trên đó để xor mới bằng 0; thao tác này chính là chuyển số bóng bị giảm xuống bậc ngay dưới. Do đó vị trí thua chính xác là các vị trí có X = 0, nên thuật toán đúng.
  • Độ phức tạp: Mỗi ván dùng O(n) thời gian và O(1) bộ nhớ phụ.