题目传送门:P1026 [NOIP2001 提高组] 统计单词个数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题目描述
给出一个长度不超过 200200 的由小写英文字母组成的字母串(该字串以每行 2020 个字母的方式输入,且保证每行一定为 2020 个)。要求将此字母串分成 kk 份,且每份中包含的单词个数加起来总数最大。
每份中包含的单词可以部分重叠。当选用一个单词之后,其第一个字母不能再用。例如字符串 this
中可包含 this
和 is
,选用 this
之后就不能包含 th
。
单词在给出的一个不超过 66 个单词的字典中。
要求输出最大的个数。
输入格式
每组的第一行有两个正整数 p,kp,k。 pp 表示字串的行数,kk 表示分为 kk 个部分。
接下来的 pp 行,每行均有 2020 个字符。
再接下来有一个正整数 ss,表示字典中单词个数。 接下来的 ss 行,每行均有一个单词。
输出格式
11个整数,分别对应每组测试数据的相应结果。
输入输出样例
输入 #1
1 3 thisisabookyouareaoh 4 is a ok sab
输出 #1
7
说明/提示
【数据范围】
对于 100%100% 的数据,2≤k≤402≤k≤40,1≤s≤61≤s≤6。
【样例解释】 划分方案为 this / isabookyoua / reaoh
【题目来源】
NOIP 2001 提高组第三题
给出一个长度不超过200的由小写英文字母组成的字母串(约定该字串以每行20个字母的方式输入,且保证每行一定为20个)。要求将此字母串分成k份(1<k≤40),且每份中包含的单词个数加起来总数最大(每份中包含的单词可以部分重叠。当选用一个单词之后,其第一个字母不能再用。例如字符串this中可包含this和is,选用this之后就不能包含th)。
单词在给出的一个不超过6个单词的字典中。
要求输出最大的个数。
输入 每组的第一行有2个正整数(p,k)
p表示字串的行数,k表示分为k个部分。
接下来的p行,每行均有20个字符。
再接下来有1个正整数s,表示字典中单词个数。(1≤s≤6)
接下来的s行,每行均有1个单词。
输出: 1个整数,分别对应每组测试数据的相应结果。
1·关于 (本题工具)
string相当于用“ ”括起来的的几个字符,所以string表示了一个字符串
(1).构造函数:
string(const char *s);//用char类字符串s初始化
string(int n,char c;//用n个字符c初始化
string s或string s="hello";
(2).字符操作:string s;
-
s[x]返回当前字符串中第x个字符的位置,还有s()提供范围检查。原型是
const char &operator [ ] (int n) const;