canuc80k5241·42/50

Bước Nhảy Trên Hoán Vị

Nộp bài trên LQDOJ

Bài 52 · Ad Hoc Game Theory

Cho một hoán vị độ dài . Nếu quân đang ở vị trí , người chơi có thể chuyển tới khi:

  • là bội dương của ;
  • .

không có nước đi thua. Với mỗi vị trí xuất phát, hãy cho biết người đi trước thắng () hay thua ().

Input

  • Dòng đầu chứa ; dòng sau chứa một hoán vị của .

Output

  • In chuỗi ký tự A/B; ký tự thứ cho biết trạng thái xuất phát ở vị trí .

Constraints

  • .
  • Dãy là một hoán vị của .

Scoring

  • Subtask ( số điểm): các test - có kích thước nhỏ, thuận tiện kiểm chứng độc lập.
  • Subtask ( số điểm): không có giới hạn bổ sung ngoài các cận đã nêu.

Example

Test 1

Input

1
1

Output

B

Giải thích: Hoán vị chỉ có phần tử , nên không có vị trí đích nào mang giá trị lớn hơn để thực hiện nước đi. Vị trí duy nhất là trạng thái thua và ký tự cần in là .

Lời giải tóm tắt
  • Ý tưởng và thuật toán: Lưu pos[value]. Xử lý value từ n giảm xuống 1; khi xét vị trí i=pos[value], mọi đích hợp lệ có giá trị lớn hơn đã được phân loại.
  • Ý tưởng và thuật toán: Duyệt các vị trí i+value, i+2*value, ... và i-value, i-2*value, .... Chỉ đích có a[j]>value là hợp lệ.
  • Ý tưởng và thuật toán: Nếu tồn tại một đích đang thua, vị trí i là thắng.
  • Ý tưởng và thuật toán: Nếu mọi đích hợp lệ đều thắng hoặc không có đích, i là thua.
  • Ý tưởng và thuật toán: In A cho trạng thái thắng, B cho trạng thái thua.
  • Chứng minh đúng đắn: Vì mỗi nước đi làm giá trị tại vị trí tăng nghiêm ngặt, đồ thị trạng thái không có chu trình; thứ tự giá trị giảm dần là thứ tự topo ngược.
  • Chứng minh đúng đắn: Chứng minh quy nạp theo giá trị giảm. Trạng thái chứa giá trị lớn nhất không có đích lớn hơn nên thua, đúng với code. Giả sử mọi trạng thái giá trị lớn hơn x đã đúng. Từ vị trí có giá trị x, người hiện tại thắng đúng khi có thể chuyển sang một trạng thái mà đối thủ thua; nếu không, mọi nước đều giao trạng thái thắng cho đối thủ và người hiện tại thua. Code xét đúng toàn bộ các vị trí có khoảng cách là bội x và lọc đúng điều kiện lớn hơn, nên phân loại chính xác.
  • Độ phức tạp: Tổng số vị trí được duyệt là O(n log n) trên một hoán vị; bộ nhớ O(n).