trang chủ / đề bài / restsite

Trạm nghỉ trên đường

Đề bài

Mô tả

Quãng đường từ thành phố A đến thành phố B dài n km và được xem như một đoạn thẳng: A nằm ở toạ độ 0, B nằm ở toạ độ n.

Việc đi liên tục khiến người đi mỗi lúc một mệt hơn. Cụ thể, nếu tính từ lần nghỉ gần nhất người đó đã đi được i km, thì độ mệt của km thứ i+1 là ai+1. Dãy a không giảm: a1≤a2≤…≤an. Độ mệt của cả hành trình là tổng độ mệt của từng km.

Tại mỗi điểm nguyên 1,2,…,n−1 có thể có hoặc không có một trạm nghỉ. Khi đi tới một trạm nghỉ, người đó dừng lại nghỉ, và bộ đếm được đặt lại từ đầu: km ngay sau đó có độ mệt a1, km kế tiếp có độ mệt a2, và cứ thế.

Chẳng hạn với n=5 và có đúng một trạm nghỉ ở toạ độ 2, độ mệt của hành trình là 2a1+2a2+a3: km thứ nhất tốn a1, km thứ hai tốn a2, sau đó người đi nghỉ, nên km thứ ba tốn a1, km thứ tư tốn a2 và km cuối tốn a3. Một ví dụ khác: với n=7 và các trạm nghỉ ở toạ độ 1 và 5, độ mệt là 3a1+2a2+a3+a4.

Người đi không biết trước những điểm nào có trạm nghỉ, nên phải xét mọi khả năng. Có tất cả 2n−1 cách bố trí trạm nghỉ khác nhau (hai cách là khác nhau nếu tồn tại một điểm có trạm nghỉ trong cách này nhưng không có trong cách kia), và tất cả đều đồng khả năng. Gọi p là kỳ vọng độ mệt của hành trình.

Có thể chứng minh p·2n−1 luôn là một số nguyên. Hãy tính giá trị đó theo modulo 998244353.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là độ dài quãng đường.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an, trong đó ai là độ mệt của km thứ i tính từ lần nghỉ gần nhất.

Dữ liệu ra

In ra một số nguyên duy nhất là p·2n−1 lấy theo modulo 998244353.

Ràng buộc

  • 1≤n≤106
  • 1≤a1≤a2≤…≤an≤106

Ví dụ

Input Output Giải thích
2
1 2
5 Có 21=2 cách bố trí. Không có trạm nghỉ nào: độ mệt a1+a2=3. Có trạm nghỉ ở toạ độ 1: độ mệt a1+a1=2. Tổng bằng 5, nên p=5/2 và p·2n−1=5.
4
1 3 3 7
60 Tổng độ mệt trên cả 23=8 cách bố trí bằng 20a1+8a2+3a3+a4=20+24+9+7=60.
1
12
12 Với n=1 chỉ có đúng một cách bố trí (không có điểm nguyên nào nằm trong khoảng), và độ mệt luôn là a1=12.

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.402 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.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0