P1026 統計單詞個數 區間dp

2022-05-01 16:33:11 字數 2109 閱讀 7893

給出乙個長度不超過200200的由小寫英文本母組成的字母串(約定;該字串以每行2020個字母的方式輸入,且保證每行一定為2020個)。要求將此字母串分成kk份(11

單詞在給出的乙個不超過66個單詞的字典中。

要求輸出最大的個數。

輸入格式:

每組的第一行有22個正整數(p,kp,k)

pp表示字串的行數,kk表示分為kk個部分。

接下來的pp行,每行均有2020個字元。

再接下來有11個正整數ss,表示字典中單詞個數。(1 \le s \le 61≤s≤6)

接下來的ss行,每行均有11個單詞。

輸出格式:

11個整數,分別對應每組測試資料的相應結果。

輸入樣例#1: 複製

1 3

thisisabookyouareaoh4is

aoksab

輸出樣例#1: 複製

7
this/isabookyoua/reaoh

一共有兩個dp

第乙個dp為預處理

必須要從後往前轉移  這樣遇到重複的也不會影響結果   如題意所得  每次判斷具有後效性   所以當遇到這種情況的時候一定要從後往前dp  之前有一道安排工作的dp也是一樣!!!!

注意 預處理的細節

第二個dp為區間dp

劃分為k個區域只要加上k-1個隔板即可

然後就是注意 區間dp各種小細節!!!!

我做的時候有個疑問  為什麼分隔點是s後面  而不能是當前處理區間末尾的前面一格分隔  

想一想就知道是錯的!!!。。。

#includeusing

namespace

std;

//input by bxd

#define rep(i,a,b) for(int i=(a);i<=(b);i++)

#define repp(i,a,b) for(int i=(a);i>=(b);i--)

#define ri(n) scanf("%d",&(n))

#define rii(n,m) scanf("%d%d",&n,&m)

#define riii(n,m,k) scanf("%d%d%d",&n,&m,&k)

#define rs(s) scanf("%s",s);

#define ll long long

#define rep(i,n) for(int i=0;i

#define clr(a,v) memset(a,v,sizeof a)

/////////////////////////////////

/#define inf 2147483647

#define n 200

string

s;int

k,q,n;

string table[10

];int word[210][210

];int dp[210][50

];int

len;

bool check(int i,int

j)

return

false;}

void

init()

}int

main()

len=s.size();

s='*'+s;//

方便處理

ri(q);

rep(i,

1,q)

cin>>table[i];

init();

rep(i,

1,len)

dp[i][

0]=word[1

][i];

rep(i,

1,k-1)//

加入k-1個 分隔 最後就會分成k塊

rep(j,i+1

,len)

rep(s,i,j-1)//

列舉斷點s

dp[j][i]=max(dp[j][i],dp[s][i-1]+word[s+1][j]);//

我不知道為什麼改成word[s][j-1]不行 (否則 第三層迴圈沒有任何意義 答案永遠不會再更新了!!!)

cout

<1

];}

view code

洛谷 P1026 統計單詞個數 區間DP

給出乙個長度不超過200的由小寫英文本母組成的字母串 約定 該字串以每行20個字母的方式輸入,且保證每行一定為20個 要求將此字母串分成k份 1單詞在給出的乙個不超過6個單詞的字典中。要求輸出最大的個數。輸入格式 每組的第一行有二個正整數 p,k p表示字串的行數 k表示分為k個部分。接下來的p行,...

P1026 統計單詞個數

給出乙個長度不超過200的由小寫英文本母組成的字母串 約定 該字串以每行20個字母的方式輸入,且保證每行一定為20個 要求將此字母串分成k份 1單詞在給出的乙個不超過6個單詞的字典中。要求輸出最大的個數。輸入格式 每組的第一行有二個正整數 p,k p表示字串的行數 k表示分為k個部分。接下來的p行,...

P1026 統計單詞個數

p1026 統計單詞個數 設 f i j 表示到主串第 i 位,已分成 j 段的最多單詞數,val l r 表示區間 l,r 包含的單詞個數 可得 f i j max f i j f u j 1 val u 1 i 套乙個三重迴圈即可 val l r 可以暴力處理 單詞判重用map include ...