trang chủ / đề bài / abgame / lời giải

Trò Chơi Alice-Bob

Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Tác giả: huunguyenhuunguyen

Hướng tiếp cận

Bài toán trò chơi có chiến lược tối ưu. Mấu chốt là quan sát rằng mỗi vị trí được chọn đúng một lần, và ở mỗi vị trí người chơi chỉ cần đổi sang chữ cái có lợi nhất cho mình.

Nhận xét quan trọng

  1. Vì mỗi vị trí chỉ được "chỉnh" một lần và có thể đổi sang bất kỳ chữ cái nào khác giá trị hiện tại, người đi vị trí i luôn có thể chọn:
    • Alice (muốn nhỏ): chữ a — trừ khi si=a, lúc đó chọn b.
    • Bob (muốn lớn): chữ z — trừ khi si=z, lúc đó chọn y.
  2. Ai đi vị trí nào? Vì hai bên có thể chọn vị trí, nhưng nội dung mỗi vị trí cuối cùng chỉ phụ thuộc người cuối cùng đặt nó (mỗi vị trí 1 lượt) — và quan trọng hơn, Alice luôn có thể "chiếm" vị trí 1 trước, sau đó Bob chiếm vị trí 2, v.v. Vì lần lượt từ trái sang phải là thứ tự từ điển, không bên nào có lý do bỏ qua vị trí trái nhất chưa chỉnh để Bob/Alice chỉnh ngược ý mình.
  3. Kết quả: vị trí i (1-indexed) được chỉnh bởi Alice nếu i lẻ, bởi Bob nếu i chẵn.

Thuật toán

Duyệt từng ký tự của s:

  • Nếu chỉ số (1-indexed) lẻ: thay si bằng a (hoặc b nếu si đã là a).
  • Nếu chỉ số chẵn: thay bằng z (hoặc y nếu si đã là z).

In xâu kết quả.

Độ phức tạp

  • Thời gian: O(|s|) cho mỗi test.
  • Bộ nhớ: O(|s|).

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0