trang chủ / bài tập / spidernim

Trò chơi chia chu trình (Spider Nim)

Đề bài

Mô tả

Hai người chơi luân phiên thực hiện nước đi trên một tập hợp các chu trình. Ban đầu tập hợp rỗng. Trong nước đi của mình, người chơi phải chọn một chu trình có ít nhất 2 đỉnh (giả sử chu trình đó có x đỉnh) và thay nó bằng hai chu trình có pxp đỉnh, với 1p<x do người chơi tự chọn. Ai không thể đi được thì thua.

Bạn cần xử lý n truy vấn. Truy vấn thứ i thêm vào tập hợp một chu trình có ai đỉnh (tập hợp này là multiset — có thể chứa các chu trình giống nhau). Sau mỗi truy vấn, hãy cho biết nếu bắt đầu chơi với tập hợp hiện tại thì ai sẽ thắng, giả sử cả hai người chơi tối ưu và người chơi thứ nhất đi trước.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n — số truy vấn.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an.

Dữ liệu ra

In ra n dòng. Dòng thứ i in 1 nếu người chơi thứ nhất thắng sau truy vấn thứ i, ngược lại in 2.

Ràng buộc

  • 1n100000
  • 1ai109

Ví dụ

Input Output Giải thích
3
1 2 3
2
1
1
Sau truy vấn 1, chỉ có 1 chu trình kích thước 1 — người 1 không đi được, thua. Sau truy vấn 2, người 1 chia chu trình 2 thành hai chu trình 1; người 2 không đi được. Sau truy vấn 3, người 1 chia chu trình 3 thành 12 rồi thắng tương tự.
5
1 1 5 1 1
2
2
2
2
2
Các chu trình kích thước 1 không thể chia. Sau truy vấn 3, chỉ có một chu trình kích thước 5 là chia được; phân tích cho thấy người 1 luôn thua dù chọn cách chia nào.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0