Nghịch thế sau khi xáo trộn

Đề bài

Mô tả

Cho một hoán vị a1,a2,,an của các số nguyên từ 1 đến n. Ta thực hiện đúng một lần thao tác sau:

  1. Chọn ngẫu nhiên một đoạn [l,r] với 1lrn. Tất cả n(n+1)2 đoạn có xác suất được chọn bằng nhau.
  2. Đặt k=rl+1. Chọn ngẫu nhiên một hoán vị p1,p2,,pk của các số 1,2,,k. Tất cả k! hoán vị có xác suất bằng nhau.
  3. Sắp xếp lại các phần tử của đoạn [l,r] theo hoán vị p vừa chọn: gọi b1,b2,,bk là các giá trị al,al+1,,ar sau khi sắp xếp tăng dần; phần tử tại vị trí l+t1 trong dãy mới bằng bpt. Nói cách khác, tập giá trị trong đoạn [l,r] được giữ nguyên nhưng thứ tự được hoán vị một cách đều ngẫu nhiên.

Một nghịch thế là một cặp chỉ số (i,j) với i<jai>aj.

Hãy tính kỳ vọng của số nghịch thế trong dãy sau khi thực hiện đúng một thao tác như trên.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — độ dài của hoán vị.
  • Dòng thứ hai chứa n số nguyên phân biệt — các phần tử của hoán vị.

Dữ liệu ra

In ra một số thực — kỳ vọng số nghịch thế. Đáp án được chấp nhận nếu sai số tuyệt đối hoặc tương đối không vượt quá 109.

Ràng buộc

  • 1n105
  • a là một hoán vị của 1,2,,n.

Ví dụ

Input Output Giải thích
3
2 3 1
1.916666666666667 6 đoạn [l,r] được chọn với xác suất bằng nhau. Tính kỳ vọng số nghịch thế sau khi xáo trộn từng đoạn rồi lấy trung bình cho ra 23121.9167.
3
1 2 3
0.416666666666667 Dãy ban đầu không có nghịch thế. Chỉ khi đoạn được chọn có độ dài 2 thì mới có thể xuất hiện nghịch thế.
2
1 2
0.166666666666667 3 đoạn: [1,1], [2,2], [1,2]. Hai đoạn đầu không thay đổi gì; đoạn thứ ba có xác suất 12 tạo ra một nghịch thế. Kỳ vọng =13·12=16.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0