trang chủ / đề bài / thhv23_marbles

Bắn bi

Đề bài

Mô tả

Trường của Vinh đang tổ chức một giải bắn bi với luật chơi khá đặc biệt. Ban đầu có n viên bi được đánh số 1,2,3,…,n từ trái sang phải, viên bi ở vị trí i có hệ số điểm là ai. Mỗi lần bắn, nếu bắn trúng một viên bi ở vị trí j, người chơi sẽ được số điểm bằng tích hệ số điểm của viên bi đó với tổng hệ số điểm của 2 viên bi bên cạnh (hai viên bi đang đứng ngay bên trái và ngay bên phải nó trong hàng hiện tại). Sau khi bắn, viên bi ở vị trí j sẽ bị loại bỏ và các viên bi bên phải (vị trí j+1,j+2,…) sẽ được đẩy sang trái một vị trí.

Ví dụ: Dãy bi ban đầu là {2,5,7,3,8,1}.

  • Khi bắn vào viên bi vị trí 3, người chơi được 7×(5+3)=56 điểm, dãy bi trở thành {2,5,3,8,1}.
  • Khi bắn tiếp vào viên bi vị trí 4, người chơi được 8×(3+1)=32 điểm, dãy bi trở thành {2,5,3,1}.

Mỗi người cần thực hiện n−2 lần bắn, đồng thời không được bắn vào một trong hai vị trí đầu tiên và cuối cùng.

Lần này, khi đến với hội thi, Vinh chưa ôn tập thuật toán bắn tối ưu nên Vinh đã chọn một cách bắn ngẫu nhiên, xác định bởi dãy b1,b2,b3,…,bn−2. Lượt bắn thứ i (1≤i≤n−2), Vinh sẽ bắn vào viên bi ở vị trí thứ bi trong hàng hiện tại.

Yêu cầu: Hãy lập trình xác định tổng số điểm Vinh đạt được sau n−2 lượt bắn.

Dữ liệu vào

  • Dòng đầu chứa số nguyên dương n (3≤n≤2×105).
  • Dòng thứ hai chứa n số nguyên dương a1,a2,…,an (ai≤105, ∀i=1,2,…,n).
  • Dòng thứ ba chứa n−2 số nguyên b1,b2,…,bn−2 (1<bi≤n−i, ∀i=1,2,…,n−2).

Dữ liệu ra

In ra một số nguyên duy nhất là tổng số điểm Vinh nhận được sau khi thực hiện n−2 lượt bắn.

Ràng buộc

  • 3≤n≤2×105.
  • 1≤ai≤105 với mọi i=1,2,…,n.
  • 1<bi≤n−i với mọi i=1,2,…,n−2 (trước lượt bắn thứ i hàng còn n−i+1 viên bi, nên viên bị bắn không bao giờ là viên đầu tiên hay cuối cùng).

Subtasks

Điểm được tính theo từng test.

  • Subtask 1 (10% số test): n≤1000; ai=1, ∀i=1,2,…,n.
  • Subtask 2 (15% số test): n≤1000; bi=2, ∀i=1,2,…,n−2.
  • Subtask 3 (35% số test): n≤1000.
  • Subtask 4 (40% số test): n≤2×105.

Ví dụ

Input Output Giải thích
6
2 5 7 3 8 1
3 4 3 2
121 Bắn vị trí 3: 7×(5+3)=56, còn {2,5,3,8,1}. Bắn vị trí 4: 8×(3+1)=32, còn {2,5,3,1}. Bắn vị trí 3: 3×(5+1)=18, còn {2,5,1}. Bắn vị trí 2: 5×(2+1)=15. Tổng 56+32+18+15=121.
5
4 1 3 2 6
2 2 2
45 Ví dụ bổ sung (không có trong đề gốc). Vị trí bi tính trong hàng hiện tại: 1×(4+3)=7, còn {4,3,2,6}; 3×(4+2)=18, còn {4,2,6}; 2×(4+6)=20. Tổng 45.

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