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

Vasya và xâu nhị phân

Đề bài

Mô tả

Cho một xâu nhị phân s độ dài n chỉ gồm các ký tự 01, và một mảng a độ dài n.

Bạn lặp lại thao tác sau cho đến khi xâu rỗng: chọn một đoạn con liên tiếp gồm các ký tự giống nhau, xóa nó khỏi xâu rồi nối hai phần còn lại với nhau (mỗi phần có thể rỗng). Mỗi lần xóa một đoạn con độ dài x, bạn nhận được ax điểm.

Ví dụ, từ xâu 111110 nếu bạn xóa đoạn 111 thì xâu trở thành 110.

Hãy tìm tổng số điểm lớn nhất bạn có thể đạt được.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — độ dài xâu s.
  • Dòng thứ hai chứa xâu s gồm các ký tự 01.
  • Dòng thứ ba chứa n số nguyên a1,a2,,an.

Dữ liệu ra

In ra tổng số điểm lớn nhất có thể đạt được.

Ràng buộc

  • 1n100
  • 1ai109

Ví dụ

Input Output Giải thích
7
1101001
3 4 9 100 1 2 3
109 Một dãy thao tác tối ưu: 1101001111001111011111. Xóa lần lượt ba ký tự 0 rồi xóa cả khối 1111. Tổng điểm =a1+a1+a1+a4=3+3+3+100=109.
5
10101
3 10 15 15 15
23 Dãy thao tác tối ưu: 10101100111, tổng điểm =a1+a2+a2=3+10+10=23.

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