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

Truy vấn ngẫu nhiên

Đề bài

Mô tả

Cho một mảng a gồm n số nguyên dương a1,a2,,an.

Ta chọn hai số nguyên lr trong đoạn từ 1 đến n (chọn ngẫu nhiên, đồng khả năng và độc lập với nhau). Nếu l>r thì đổi chỗ lr. Sau đó xét đoạn con của mảng từ chỉ số l đến chỉ số r (tính cả hai đầu, đánh chỉ số từ 1).

Hãy tính kỳ vọng của số lượng phần tử phân biệt (số giá trị khác nhau) trong đoạn con đó.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên n.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an.

Dữ liệu ra

In ra một số thực: kỳ vọng của số phần tử phân biệt trong đoạn được chọn.

Đáp án được coi là đúng nếu sai số tuyệt đối hoặc tương đối so với đáp án chuẩn không vượt quá 104.

Ràng buộc

  • 1n106
  • 1ai106

Ví dụ

Input Output Giải thích
2
1 2
1.500000 4 cặp (l,r) đồng khả năng: (1,1),(1,2),(2,1),(2,2). Sau khi sắp lại thành các đoạn [1,1],[1,2],[1,2],[2,2] với số phần tử phân biệt lần lượt là 1,2,2,1. Kỳ vọng =(1+2+2+1)/4=1.5.
2
2 2
1.000000 Mọi đoạn con đều chỉ chứa giá trị 2 nên số phần tử phân biệt luôn bằng 1, kỳ vọng =1.

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