Login with GitHub. Nope?
修正 C++ 的程式碼在使用一定量動態記憶體後會產生 RF 的問題 @ 2019/12/6 4:45pm NeoHOJ 強勢復活中 (Open beta)
Submit  Ranklist

Problem : 217 - B. 乳酸vs乳堅

Special Judge

Problem Statistics

Solved Member: 19  Submission: 146  User Tried: 21

Statement:


乳酸!by 楊英鵬

HH在看完照片二三事後,便決定要辦一場活動來看看你是乳酸還是乳堅,HH用N張英文字卡擺放成一個字串,每張字卡背後都有不同的價值(一樣的字可能價值不同喔!),而一個字串的價值等同於結尾字卡的價值,你的任務是將原本的字串分割成1~K段,並使得價值總和最高。

有趣的是,HH要求每個字串必須是美觀的,美觀的條件是使得字串的長度介於[A,B](即A<=length<=B),因為當字串是美觀時,字串的價值也產生了改變!經過不可思議的力量,第i段的字串價值將變身為i倍,若你可以將長度為N的字串分割K段,並使得價值總和最高,你將證明你不是乳酸,而是乳堅!

Input:Output:

一個測試檔有多筆測試資料,第一行有一正整數T表示測試資料數量。

對於每筆測試資料第一行有四個正整數N, K, A, B,每個正整數的意義如敘述。

第二行有一個長度為N的字串,此字串由大小寫英文字母所構成。

第三行有N個正整數Vi,依序表示每張字卡的價值。
對於第i筆測試資料,請以"Case #i:"做開頭,詳細請參考Sample Output。

若可以將英文字卡分成K段美觀的字串,輸出一個數字表示價值總和,接下來的K行依序輸出一組可行的分割方法。若無法,則表示你是乳酸,輸出"Sorry, you're milk cheese." (不包刮雙引號)。

Sample Input:Sample Output:

4
5 2 2 3
abAbC
1 2 2 1 2
5 2 1 2
abcde
1 2 2 1 2
5 2 1 5
aaaaa
1 1 1 1 1
7 3 1 3
hanhanw
1 2 3 1 2 3 1
Case #1:
6
ab
AbC
Case #2:
Sorry, you're milk cheese.
Case #3:
3
aaaa
a
Case #4:
12
han
han
w

HINT:

就是蛋疼的女生版,反義詞是乳堅。再多的話自行遐想。

對於50%的測試資料,1<=N<=500。
對於100%的測試資料,1<=N<=5000,1<=K<=500,1<=A<=B<=5000,1<=Vi<=1000。

Problem Setter

Testdata:

TestTimeMemoryScore
01000ms65536kb
11000ms65536kb10
21500ms65536kb10
33000ms65536kb10
45000ms65536kb10
55000ms65536kb10
65000ms65536kb10
75000ms65536kb10
85000ms65536kb10
95000ms65536kb10
105000ms65536kb10