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

Tạo xâu

Đề bài

Mô tả

Bạn cần tạo ra một xâu t. Để làm điều đó, bạn có n xâu s1,s2,,sn và phải thực hiện đúng |t| thao tác (|t| là độ dài của t). Mỗi thao tác gồm:

  1. Chọn một xâu không rỗng bất kỳ trong các xâu s1,s2,,sn.
  2. Chọn một ký tự bất kỳ trong xâu đó và ghi ký tự này ra giấy.
  3. Xóa ký tự vừa chọn khỏi xâu đó.

Sau mỗi thao tác, tổng số ký tự trong các xâu giảm đi 1. Bạn tạo được xâu t nếu các ký tự đã ghi ra giấy, theo đúng thứ tự thực hiện thao tác, ghép lại thành đúng xâu t.

Ngoài ra còn có các ràng buộc sau. Với mỗi xâu si bạn biết một số ai là số ký tự tối đa được phép xóa khỏi si. Đồng thời, mỗi thao tác xóa một ký tự khỏi xâu si tốn i đồng. Nghĩa là thao tác trên s1 rẻ nhất (tốn 1 đồng), còn thao tác trên sn đắt nhất (tốn n đồng).

Hãy tính số tiền nhỏ nhất (tính bằng đồng) cần bỏ ra để tạo xâu t. Chi phí tạo xâu t là tổng chi phí của các thao tác đã dùng. Nếu không có cách nào tạo được t, in ra 1.

Dữ liệu vào

  • Dòng đầu chứa xâu t.
  • Dòng thứ hai chứa một số nguyên n là số xâu được phép thao tác.
  • Mỗi dòng trong n dòng tiếp theo chứa một xâu si và một số nguyên ai, cách nhau bởi dấu cách. ai là số ký tự tối đa được phép xóa khỏi si.

Tất cả các xâu chỉ gồm các chữ cái Latinh in thường và đều không rỗng.

Dữ liệu ra

In ra một số duy nhất là số tiền nhỏ nhất cần bỏ ra để tạo xâu t. Nếu không có lời giải, in ra 1.

Ràng buộc

  • 1n100
  • 0ai100
  • Độ dài của t và của mỗi si không vượt quá 100.

Ví dụ

Input Output Giải thích
bbaze
3
bzb 2
aeb 3
ba 10
8 Lấy các ký tự "b" và "z" từ xâu thứ nhất (giá 1 đồng), lấy "a", "e", "b" từ xâu thứ hai (giá 2 đồng). Chi phí là 2·1+3·2=8.
abacaba
4
aba 2
bcc 1
caa 2
bbb 5
18 Lấy hai "a" từ xâu thứ nhất (giá 1), một "c" từ xâu thứ hai (giá 2), hai "a" từ xâu thứ ba (giá 3), hai "b" từ xâu thứ tư (giá 4). Chi phí là 2·1+1·2+2·3+2·4=18.
xyz
4
axx 8
za 1
efg 4
t 1
-1 Không tồn tại lời giải vì không có ký tự "y" trong các xâu đã cho.

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