trang chủ / bài tập / circbarn / lời giải

Chuồng Bò Tròn

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

Lời giải: Circular Barn

Hướng tiếp cận

Phân tích trò chơi dựa trên lý thuyết trò chơi và tính chất mod 4.

Nhận xét quan trọng

Với một phòng: Farmer John thắng khi và chỉ khi a1 không chia hết cho 4. Chiến lược tối ưu liên quan đến việc cả hai chọn giá trị sao cho tổng hai lượt đồng dư 0 mod 4.

Thuật toán

  1. Tiền xử lý: Sàng số nguyên tố đến 5×106.
  2. Với mỗi giá trị v, tính min\_turns[v]: số lượt tối thiểu để giảm v về 0.
  3. Phòng quyết định là phòng có min\_turns/2 nhỏ nhất (kết thúc sớm nhất).
  4. Nếu min\_turns của phòng đó là lẻ thì John thắng, ngược lại Nhoj thắng.

Độ phức tạp

  • Tiền xử lý: O(MloglogM) với M=5×106.
  • Mỗi bộ test: O(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