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

FJ Loves Rotations

Đề bài

Mô tả

Bác John có một mảng A gồm N số nguyên. Bác chọn một vị trí yêu thích j và ghi lại giá trị Aj.

Bác có thể thực hiện phép dịch vòng mảng sang trái hoặc phải (cyclic shift). Sau mỗi phép dịch, bác ghi lại giá trị mới tại vị trí j. Mục tiêu là thu thập tất cả các giá trị phân biệt có trong mảng.

Hãy tìm số phép dịch tối thiểu cần thực hiện để thu thập được tất cả các giá trị phân biệt, với mỗi vị trí j từ 1 đ��n N.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên N (1N5×105).
  • Dòng thứ hai chứa N số nguyên A1,A2,,AN (1AiN).

Dữ liệu ra

In N số nguyên cách nhau b��i dấu cách, số thứ i là đáp án khi j=i.

Ràng buộc

  • 1N5×105
  • 1AiN
  • Input 3-5: N500
  • Input 6-8: N104

Ví dụ

Input Output Giải thích
6
1 2 3 1 3 4
4 3 3 4 3 3 Có 4 giá trị phân biệt: 1,2,3,4. Với j=1: cần 4 phép dịch. Với j=2: cần 3 phép dịch (dịch phải 3 lần thu được tất cả).
12
1 1 2 1 1 3 1 1 4 1 1 1
8 7 6 7 8 9 8 7 6 7 8 9 Có 4 giá trị phân biệt. Tối ưu nhất bắt đầu từ vị trí 3 hoặc 9 (cần 6 phép).

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