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

Kỳ vọng của các kỳ thủ

Đề bài

Mô tả

Một giải đấu cờ vua có n kỳ thủ tham gia. Mỗi kỳ thủ đấu đúng một ván với mỗi kỳ thủ còn lại. Mỗi ván đấu kết thúc với một trong hai khả năng: một người thắng và người kia thua, hoặc hai người hoà.

Mỗi kỳ thủ có một mong muốn riêng, thuộc một trong hai loại:

  1. Kỳ thủ loại 1 muốn không thua ván nào (kết thúc giải với 0 ván thua).
  2. Kỳ thủ loại 2 muốn thắng ít nhất một ván.

Hãy xác định xem có tồn tại kết quả cho tất cả các ván đấu sao cho mọi kỳ thủ đều đạt được mong muốn của mình hay không. Nếu có nhiều cách, in ra một cách bất kỳ.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t là số lượng bộ dữ liệu.
  • Với mỗi bộ dữ liệu:
    • Dòng đầu chứa số nguyên n là số kỳ thủ.
    • Dòng thứ hai chứa xâu s độ dài n gồm các ký tự trong {1,2}. Nếu si=1 thì kỳ thủ thứ i thuộc loại 1, ngược lại thuộc loại 2.

Dữ liệu ra

Với mỗi bộ dữ liệu:

  • Nếu không thể thoả mãn mọi kỳ thủ, in ra NO.
  • Ngược lại, in ra YES, rồi in ra ma trận kích thước n×n trên n dòng tiếp theo. Phần tử ở dòng i, cột j bằng:
    • + nếu kỳ thủ i thắng kỳ thủ j;
    • - nếu kỳ thủ i thua kỳ thủ j;
    • = nếu ván giữa ij hoà;
    • X nếu i=j.

Ma trận phải nhất quán: nếu ô (i,j)+ thì ô (j,i) phải là - và ngược lại; nếu (i,j)= thì (j,i) cũng là =.

Ràng buộc

  • 1t200
  • 2n50
  • |s|=n, mỗi si{1,2}

Ví dụ

Input Output Giải thích
3
3
111
2
21
4
2122
YES
X==
=X=
==X
NO
YES
X=+-
=X==
-=X+
+=-X
Bộ 1: cả ba đều loại 1, cho hoà tất cả thì không ai thua. Bộ 2: chỉ có một kỳ thủ loại 2, người đó không thể thắng ai (thắng kỳ thủ loại 1 sẽ khiến người đó thua), nên vô nghiệm. Bộ 3: ba kỳ thủ loại 2 (vị trí 1, 3, 4) thắng vòng tròn cho nhau, kỳ thủ loại 1 hoà tất cả.
3
3
222
3
122
3
112
YES
X+-
-X+
+-X
NO
NO
Bộ 1: ba kỳ thủ loại 2 thắng vòng tròn, mỗi người thắng đúng một ván. Bộ 2 và 3: nhóm kỳ thủ loại 2 chỉ có 2 (hoặc 1) người, không đủ để mỗi người đều thắng ít nhất một ván.

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