統計單詞個數 洛谷p1026

2021-08-10 00:22:24 字數 1276 閱讀 5144

給出乙個長度不超過200的由小寫英文本母組成的字母串(約定;該字串以每行20個字母的方式輸入,且保證每行一定為20個)。要求將此字母串分成k份(1單詞在給出的乙個不超過6個單詞的字典中。

要求輸出最大的個數。

輸入格式:

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

p表示字串的行數;

k表示分為k個部分。

接下來的p行,每行均有20個字元。

再接下來有乙個正整數s,表示字典中單詞個數。(1<=s<=6)

接下來的s行,每行均有乙個單詞。

輸出格式:

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

輸入樣例#1:

複製

1 3

thisisabookyouareaoh4is

aoksab

輸出樣例#1:

複製

7

this/isabookyoua/reaoh

因為不太會處理字串,但看到判斷字元相等,雜湊有大用處了。

分別把每乙個子串雜湊一遍和目標串匹配,匹配完成將這一段加1;

預處理出來乙個map[i][j]表示在從i到j的區間裡有合法的子串的個數.

那轉移可以有以下,j為分的次數,i為當前分到第i個位置

··· dp[i][j]=max(dp[i][j],dp[1~i-1][j-1])

特殊的當j=1dp[i][1]=map[0][i]

#include#include#include#include#define f(i,l,r) for(i=(l);i<=(r);i++)

#define ff(i,r,l) for(i=(r);i>=(l);i--)

using namespace std;

const int base=233,mod=10000009;

char a[300],b[10][100];

int n,k,m,l[10],c[10],w[300][300];

int dp[300][300];

inline int ha(char b,int len)

return val;

}inline int pd(int x,int y)

len=strlen(a);

cin>>m;

f(i,1,m)

ff(j,len-1,0)

} f(i,0,len-1)

} f(i,0,len-1)

}} }

cout

}

洛谷 P1026 統計單詞個數

題目描述 給出乙個長度不超過200的由小寫英文本母組成的字母串 約定 該字串以每行20個字母的方式輸入,且保證每行一定為20個 要求將此字母串分成k份 1 k 40 且每份中包含的單詞個數加起來總數最大 每份中包含的單詞可以部分重疊。當選用乙個單詞之後,其第乙個字母不能再用。例如字串this中可包含...

洛谷P1026(統計單詞個數)

給出乙個長度不超過 200 的由小寫英文本母組成的字母串 該字串以每行 20 個字母的方式輸入,且保證每行一定為 20 個 要求將此字母串分成 k份,且每份中包含的單詞個數加起來總數最大。每份中包含的單詞可以部分重疊。當選用乙個單詞之後,其第乙個字母不能再用。例如字串 this 中可包含 this ...

洛谷 P1026 統計單詞個數

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