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

Dịch Vòng Tốt

Đề bài

Mô tả

Cho hoán vị p1,p2,,pN của 1,2,,N. Định nghĩa:

  • f(p)=i=1N|pii|2

Một hoán vị được gọi là tốt nếu có thể biến đổi nó thành hoán vị đơn vị bằng tối đa f(p) phép hoán đổi hai phần tử liền kề.

Cho một hoán vị, xác định những phép dịch vòng phải nào tạo ra hoán vị tốt. Phép dịch vòng phải s bước biến [p1,,pN] thành [pNs+1,,pN,p1,,pNs].

Dữ liệu vào

  • Dòng 1: Số nguyên T — số bộ test (1T105)
  • Với mỗi bộ test:
    • Dòng 1: Số nguyên N (1N2×105)
    • Dòng 2: N số nguyên p1,,pN

Tổng N trên tất cả bộ test không vượt quá 106.

Dữ liệu ra

Với mỗi bộ test:

  • Dòng 1: Số nguyên k — số phép dịch vòng tốt
  • Dòng 2: k số nguyên s (0s<N) theo thứ tự tăng dần

Ràng buộc

  • 1N2×105
  • N106

Ví dụ

Input Output Giải thích
3
5
5 4 3 2 1
4
1 2 4 3
5
1 2 3 4 5
0

2
0 1
5
0 1 2 3 4
Hoán vị đơn vị luôn tốt (0 phép dịch). Hoán vị [5,4,3,2,1] không có phép dịch nào cho kết quả tốt.

Ghi chú

  • Test 2: N10
  • Test 3-5: T10, N2000
  • Test 6-11: Không ràng buộc bổ sung

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