trang chủ / đề bài / voi13_merge

Trộn xâu

Đề bài

Mô tả

Cho 2 xâu ký tự X=x1,x2,…,xm và Y=y1,y2,…,yn. Cần xây dựng xâu T=t1,t2,t3,…,tn+m gồm tất cả các ký tự trong xâu X và tất cả các ký tự trong xâu Y, sao cho các ký tự trong X xuất hiện trong T theo thứ tự xuất hiện trong X và các ký tự trong Y xuất hiện trong T theo đúng thứ tự xuất hiện trong Y, đồng thời với tổng chi phí trộn là nhỏ nhất. Tổng chi phí trộn hai xâu X và Y để thu được xâu T được tính bởi công thức:

c(T)=∑k=1n+m−1c(tk,tk+1)

trong đó, các chi phí c(tk,tk+1) được tính như sau:

  • Nếu hai ký tự liên tiếp tk, tk+1 được lấy từ cùng một xâu X hoặc Y thì c(tk,tk+1)=0.
  • Nếu hai ký tự liên tiếp tk, tk+1 là xi, yj thì chi phí phải trả là c(xi,yj). Nếu hai ký tự liên tiếp tk, tk+1 là yj, xi thì chi phí phải trả là c(yj,xi)=c(xi,yj).

Dữ liệu vào

  • Dòng đầu tiên chứa Q là số lượng bộ dữ liệu. Tiếp đến là Q nhóm dòng, mỗi nhóm cho thông tin về 1 bộ dữ liệu theo khuôn dạng sau:
  • Dòng thứ nhất chứa 2 số nguyên dương m, n (m,n≤1000).
  • Dòng thứ i trong m dòng tiếp theo chứa n số nguyên dương, mỗi số không vượt quá 109: c(xi,y1),c(xi,y2),…,c(xi,yn), i=1,2,…,m.

Dữ liệu ra

Gồm Q dòng, mỗi dòng chứa một số nguyên là tổng chi phí theo cách xây dựng xâu T tìm được tương ứng với bộ dữ liệu vào.

Ràng buộc

  • 1≤Q≤10.
  • 1≤m,n≤1000; trong một test, tổng các tích m·n không vượt quá 106.
  • 1≤c(xi,yj)≤109.

Subtasks

  • Subtask 1 (60% số test): m,n≤10.
  • Subtask 2 (40% số test): không có ràng buộc gì thêm.

Mỗi subtask gồm nhiều test, mỗi test được chấm điểm riêng.

Ví dụ

Input Output Giải thích
1
2 3
3 2 30
15 5 4
6 T=y1,y2,x1,x2,y3 có chi phí c(x1,y2)+c(x2,y3)=2+4=6.
2
3 3
9 1 9
9 9 9
9 9 1
1 1
7
2
7
Bộ 1: T=y1,y2,x1,x2,x3,y3 có chi phí c(x1,y2)+c(x3,y3)=1+1=2. Bộ 2: chỉ có một lần chuyển xâu, chi phí 7.

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