题目描述 Description

给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个)。要求将此字母串分成k份(1<k<=40),且每份中包含的单词个数加起来总数最大(每份中包含的单词可以部分重叠。当选用一个单词之后,其第一个字母不能再用。例如字符串this中可包含this和is,选用this之后就不能包含th)(管理员注:这里的不能再用指的是位置,不是字母本身。比如thisis可以算做包含2个is)。
单词在给出的一个不超过6个单词的字典中。
要求输出最大的个数。

输入描述 Input Description

第一行为一个正整数(0<n<=5)表示有n组测试数据
每组的第一行有二个正整数(p,k)
p表示字串的行数;
k表示分为k个部分。
接下来的p行,每行均有20个字符。
再接下来有一个正整数s,表示字典中单词个数。(1<=s<=6)
接下来的s行,每行均有一个单词。

输出描述 Output Description

每行一个整数,分别对应每组测试数据的相应结果。

 

样例输入 Sample Input

1
1 3
thisisabookyouareaoh
4
is
a
ok
sab

样例输出 Sample Output

7

数据范围及提示 Data Size & Hint

this/isabookyoua/reaoh

/*划分性DP,用五重循环写的,数据太弱了,三重循环的没写出来f[i][j][k]表示把i-j分成k份的最大值。
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#include<map>
#define M 210
#define N 35
using namespace std;
int f[M][M][N],n,p,m;
string s,ci[7];
map<string,bool> mp;
void work()
{scanf("%d%d",&n,&p);for(int i=1;i<=n;i++){string c;cin>>c;s+=c;}n*=20;scanf("%d",&m);for(int i=1;i<=m;){string c;cin>>c;if(!mp[c])ci[i]=c,i++,mp[c]=1;else m--;}for(int i=0;i<n;i++){string ss="";for(int j=i;j<n;j++){ss+=s[j];for(int k=1;k<=m;k++){int pos=0;while(ss.find(ci[k],pos)<M){pos=ss.find(ci[k],pos)+1;f[i][j][1]++;}}}}for(int len=1;len<=n;len++)for(int i=0;i+len-1<n;i++){int j=i+len-1;for(int p1=1;p1<=min(len,p);p1++)for(int k=i+1;k<j;k++)for(int p2=1;p2<min(p1,k-i+1);p2++){if(p1-p2<=j-k)f[i][j][p1]=max(f[i][j][p1],f[i][k][p2]+f[k+1][j][p1-p2]);}}printf("%d\n",f[0][n-1][p]);
}
int main()
{int T;scanf("%d",&T);while(T--){memset(f,0,sizeof(f));s="";work();}return 0;
}

View Code

转载于:https://www.cnblogs.com/harden/p/5879709.html

统计单词个数(codevs 1040)相关推荐

  1. 统计单词个数(划分型)

    codevs 1040 统计单词个数 2001年NOIP全国联赛提高组  题目等级 : 黄金 Gold 题目描述 Description 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该 ...

  2. codevs1040统计单词个数(区间+划分型dp)

    1040 统计单词个数 2001年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 给出一个长度不超过2 ...

  3. 【codevs1040】【01NOIPTG】统计单词个数,字符串的划分DP

    1040 统计单词个数 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给出一个长度不超过200的 ...

  4. 开发可统计单词个数的Android驱动程序(2)

    开发可统计单词个数的Android驱动程序(1) 五.指定与驱动相关的信息 虽然指定这些信息不是必须的,但一个完整的Linux驱动程序都会指定这些与驱动相关的信息.一般需要为Linux驱动程序指定如下 ...

  5. c语言编程统计单词的个数,使用c语言如何统计单词个数

    使用c语言如何统计单词个数 发布时间:2020-04-21 13:58:58 来源:亿速云 阅读:207 作者:小新 使用c语言如何统计单词个数?相信有很多人都不太了解,今天小编为了让大家更加了解Go ...

  6. python输入一个英文句子 输出单词个数_编写程序,给出一个英文句子,统计单词个数。_学小易找答案...

    [简答题]叙述pass语句的作用. [简答题]吹风机不工作,可以用万用表检测吗?在网上搜索关键词,吹风机不工作怎么办? [单选题]以下代码运行结果正确的是哪一项?() x=2 if x:print(T ...

  7. C语言-统计单词个数

    目录 1 算法思想 2 实现1 3 实现2 1 算法思想 读取输入进来的一个字符串,统计其中单词的个数,由于每个单词字母不一样,长度不一样,所以来依靠识别单词来统计单词数是比较难的,下面观察一个字符串 ...

  8. python统计单词个数算法_python 统计单词个数和频次

    开始学习python,习题需要统计单词个数和频次.百度找到的代码好像都有问题.自己写了一个,调试通过. 环境:python: 3.9.1 64bit :  pycharm: 2020.2  电脑 wi ...

  9. hadoop 文本统计一个字符的个数_hadoop统计单词个数 - 卡饭网

    hadoop入门之统计单词在文件中出现的个数示例 hadoop入门之统计单词在文件中出现的个数示例 Linux环境:CentOs6.4 Hadoop版本:hadoop-0.20.2 内容:统计hado ...

  10. C语言-输入一行英文字符串统计单词个数

    C语言-输入一行英文字符串统计单词个数,单词之间以空格隔开 判断是否为单词的依据,通过一个flag标识,flag为0表示字符为空格,接下来出现不是空格,会将flag置为1 只有当flag为1且当前字符 ...

最新文章

  1. Evernote相关技术介绍——mysql+lucene+tomcat
  2. HZOJ string
  3. Docker将镜像上传至私有仓库
  4. 不断电系统的容量如何计算?
  5. 使用Entity Framework Core访问数据库(Oracle篇)
  6. java while do循环_c语言中,while 和 do while 循环的主要区别是( )
  7. 营销 客户旅程模板_我如何在国外找到开发人员的工作:我从营销到技术的旅程...
  8. html内容点击按钮自动复制,HTML页面---复制按钮的使用(包含弹层)
  9. String StringBuffer StringBuilder的异同
  10. 吴宗宪经典暴笑语录(笑不死你肯定是个异类)
  11. AS技巧合集「常用技巧篇」
  12. Python 列表(List) 的三种遍历(序号和值)方法
  13. effective c# 明白几个相等运算
  14. CSDN新版下载频道改版上线了
  15. tcpdf开发文档(中文翻译版)
  16. CSS border 属性及用border画各种图形
  17. 微信公众平台、微信开放平台的关系
  18. 金士顿 DT101 G2 8GU盘量产全过程图解(群联篇)(2)
  19. flutter web集成友盟统计
  20. 《老爸老妈浪漫史》Barney和Robin终于。。。

热门文章

  1. React项目build之后资源文件路径不正确或打开空白页的问题及简易解决方法
  2. 对ARP病毒攻击的防范和处理及相应工具方法
  3. 关于高效、高质和高产
  4. js做小数运算精度问题
  5. Android性能优化-Render篇
  6. 触发器使用教程和命名规范
  7. 通过jquery进行ajax的一些“异常”请求的页面自提交到其它页面
  8. 融合存储超越统一存储
  9. OpenCV-python学习笔记(四)——smoothing and blurring平滑和模糊
  10. python创建自定义函数is_number()来判断一个字符是否是数字