{"trustable":true,"prependHtml":"\u003cscript\u003e\n window.katexOptions \u003d {\n delimiters: [\n {left: \u0027\\\\(\u0027, right: \u0027\\\\)\u0027, display: false},\n ]\n };\n\u003c/script\u003e\n","sections":[{"title":"","value":{"format":"HTML","content":"\u003cp\u003eMột ngôn ngữ xử lý chuỗi cụ thể cho phép người lập trình chia một chuỗi thành hai phần. Vì điều này liên quan đến việc sao chép chuỗi cũ, nên mất n đơn vị thời gian để chia một chuỗi có n ký tự thành hai phần. Giả sử một người lập trình muốn chia một chuỗi thành nhiều phần. Thứ tự thực hiện việc chia có thể ảnh hưởng đến tổng thời gian sử dụng. Ví dụ, giả sử chúng ta muốn chia một chuỗi 20 ký tự sau các ký tự 3, 8 và 10 (đánh số các ký tự theo thứ tự tăng dần từ đầu bên trái, bắt đầu từ 1). Nếu việc chia được thực hiện theo thứ tự từ trái sang phải, thì việc chia đầu tiên mất 20 đơn vị thời gian, việc chia thứ hai mất 17 đơn vị thời gian và việc chia thứ ba mất 12 đơn vị thời gian, tổng cộng là 49 đơn vị thời gian (xem ví dụ bên dưới). Nếu việc chia được thực hiện theo thứ tự từ phải sang trái, thì việc chia đầu tiên mất 20 đơn vị thời gian, việc chia thứ hai mất 10 đơn vị thời gian và việc chia thứ ba mất 8 đơn vị thời gian, tổng cộng là 38 đơn vị thời gian.\u003c/p\u003e\n\u003cp\u003eChi phí của việc chia theo thứ tự từ trái sang phải:\n\u003c/p\u003e\u003cpre\u003ethisisastringofchars (original)\nthi sisastringofchars (cost:20 units)\nthi sisas tringofchars (cost:17 units)\nthi sisas tr ingofchars (cost:12 units)\n Total: 49 units.\u003c/pre\u003e\u003cp\u003e\u003c/p\u003e\n\u003cp\u003eChi phí của việc chia theo thứ tự từ phải sang trái:\n\u003c/p\u003e\u003cpre\u003ethisisastringofchars (original)\nthisisastr ingofchars (cost:20 units)\nthisisas tr ingofchars (cost:10 units)\nthi sisas tr ingofchars (cost: 8 units)\n Total: 38 units.\u003c/pre\u003e\u003cp\u003e\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNhập:\u003c/b\u003e\u003c/p\u003e\n\u003cp\u003eCó một số trường hợp kiểm tra! Trong mỗi trường hợp kiểm tra, dòng đầu tiên chứa 2 số nguyên N (2≤N≤10000000) và M (1≤M≤1000, M\u003cN). N là độ dài ban đầu của chuỗi và M là số lần chia. Các dòng tiếp theo chứa M số nguyên Mi (1≤Mi\u003cN) theo thứ tự tăng dần đại diện cho vị trí chia từ đầu bên trái của chuỗi.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eĐầu ra:\u003c/b\u003e\u003c/p\u003e\n\u003cp\u003eĐối với mỗi trường hợp kiểm tra, đầu ra trên một dòng chi phí ít nhất để thực hiện tất cả các việc chia.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eVí dụ Nhập:\u003c/b\u003e\u003c/p\u003e\n\u003cpre\u003e20 3\n3 8 10\u003c/pre\u003e\n\u003cp\u003e\u003cb\u003eVí dụ Đầu ra:\u003c/b\u003e\u003c/p\u003e\n\u003cpre\u003e37\u003c/pre\u003e"}}]}