codevs1040 统计单词个数

 

题目描述 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

#include<cstdio>
#include<cstring>
#define LL long long
char ch[210],a[10][210];
LL f[210][10];
int l[10],mn[210];
int p,m,k;
inline int min(int a,int b){return a<b?a:b;}
inline int max(int a,int b){return a>b?a:b;}
bool mrk(int k,int x)
{if(l[k]+x-1>p*20)return 0;for(int i=1;i<=l[k];i++)if(a[k][i]!=ch[x+i-1])return 0;return 1;
}
int calc(int x,int y)
{int sum=0;for(int i=x;i<=y;i++)if(mn[i]<=y)sum++;return sum;
}
int main()
{int T;scanf("%d",&T);while (T--){memset(mn,127/3,sizeof(mn));memset(ch,0,sizeof(ch));memset(f,-1,sizeof(f));scanf("%d%d",&p,&m);for (int i=1;i<=p;i++)for (int j=1;j<=20;j++){char c=getchar();while (c<'a'||c>'z')c=getchar();ch[20*(i-1)+j]=c;}scanf("%d",&k);for(int i=1;i<=k;i++)scanf("%s",a[i]+1);for (int i=1;i<=k;i++)l[i]=strlen(a[i]+1);for (int i=1;i<=p*20;i++)for (int j=1;j<=k;j++)if (mrk(j,i))mn[i]=min(mn[i],i+l[j]-1);f[0][0]=0;for(int i=1;i<=p*20;i++)for(int j=0;j<i;j++){int t=calc(j+1,i);for(int l=1;l<=m;l++)if(f[j][l-1]!=-1)f[i][l]=max(f[i][l],f[j][l-1]+t);}printf("%d\n",f[p*20][m]);}return 0;
}

  

转载于:https://www.cnblogs.com/zhber/p/4035907.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE MATH

1. 求两点的单位向量

root 密码丢失后的重新设置

/usr/local/mysql/bin/mysqld_safe --skip-grant-tables & mysql> use mysql; mysql> update user set passwordPASSWORD("root") where userroot;service mysqld stop; service mysqld start;/usr/local/mysql/bin/mysql -u root -p 转载于:https://w…

yum安装git

此方法对于RHEL、Fedora、CentOS有效&#xff1a; 1.yum install git 2.yum istall git-svn git-email git-gui gitk 转载于:https://www.cnblogs.com/moqiang02/p/4061129.html

材质

1. 随摄像机变化的镜面放射效果 2. 给物体表面增加抛光度 3. 菲涅耳透镜效果

Metasploit Framework命令汇总

一、msfconsole ? 帮助菜单back 从当前环境返回banner 显示一个MSF bannercd 切换目录color 颜色转换connect 连接一个主机exit 退出MSFhelp 帮助菜单info 显示一个或多个模块的信息irb 进入irb脚本模式jobs 显示和管理作业kill 杀死一个作业load 加载一个插件loadpath 在一个…

html keyup事件,jquery keyup事件为什么不执行?

先指出你的一个错误点$(#skillKey).on(click, tr, function () {$(this).css(color,red);$(this).keyup(function(){alert(123)});});你这样绑定事件&#xff0c;结果是点击一次tr绑定一次&#xff0c;点了多少次就绑定了多少次&#xff0c;这个例子还是不明显&#xff0c;你在…

cable

1. 建立一个actor&#xff0c;添加一个cable, 然后添加两个mesh作为cable的两个端点 2. 在编辑器中只能设置cable终点attach的mesh和mesh的socket, 因此需要在actor的构成函数里手动的设置 cable起点attach的mesh和socket

windows下memcache的安装总结

一、memcache软件的安装&#xff1a; 1、下载memcache的windows版本&#xff0c;把memcached.exe放在F:盘符&#xff0c;&#xff08;memcached.exe文件位置不可变动&#xff09;。 2、进入cmd命令终端&#xff0c;进入到F:盘符。 3、memcached.exe -d install 命令进行memcach…

html 调用c#dll中的控件,C#调用ActiveX控件的方法

C#调用ActiveX控件时通常要进行两步操作&#xff1a;第一步&#xff1a;注册控件&#xff0c;例如ABE.DLL&#xff0c;将ABE.DLL拷贝至系统文件夹SYSTEM32下&#xff0c;然后在开始中执行CMD命令&#xff0c;regsvr32 ABE.DLL&#xff0c;会提示注册成功&#xff1b;第二步&…

Android-将切换tabs的指示器合并到ActionBar上

最近比较忙&#xff0c;好久没更新过博客。国庆第一天没回家&#xff0c;闲下来可以把之前就想贴上来的东西写一下。 使用过Smooth和Fuubo这两个优秀的第三方微博客户端的同学应该见过他们的主页UI&#xff0c;如下图&#xff1a; 他们把切换tabs的指示器放在了ActionBar上&…

html5教学文档笔记,4.HTML 教程- (HTML5 基础)

HTML 教程- (HTML5 基础)1.HTML 标题HTML 标题(Heading)是通过- 标签来定义的.2.HTML 段落HTML 段落是通过标签 来定义的.3.HTML 链接HTML 链接是通过标签 来定义的.提示:在 href 属性中指定链接的地址。菜鸟教程(runoob.com)这是一个链接使用了 href 属性这是一个链接使用了 …

虚幻4渲染系统结构解析

本文根据小米互娱 VR 技术专家 房燕良在 MDCC 2016 移动开发者大会上的演讲整理而成&#xff0c;PPT 下载地址&#xff1a;http://download.csdn.net/detail/sinat_14921509/9639244。 小米互娱 VR 技术专家 房燕良 房燕良&#xff0c;从 2001 年开始&#xff0c;自主研发 3 代…

J2EE应用与移动互联网-写在前头

通过面向移动互联网的内容管理系统开发实践&#xff0c;积攒了一些J2EE应用和前端应用的知识&#xff0c;列出目录以供后期补充成册。 1.EJB的理解 1.1 EJB组件 1.2 数据库连接池 1.3 POJO 1.4 任务 1.5 容器 2.Spring生态 2.1 Spring Ioc 2.2 Spring AOP 2.3 Spring MVC 2.4 S…

【Modern OpenGL】前言

说明&#xff1a;跟着learnopengl的内容学习&#xff0c;不是纯翻译&#xff0c;只是自己整理记录。 强烈推荐原文&#xff0c;无论是内容还是排版。 原文链接 本文地址: http://blog.csdn.net/aganlengzi/article/details/50354140 欢迎来到OpenGL 欢迎来到OpenGL学习之旅&…

对象指针

向对象程序设计上机练习九&#xff08;对象指针&#xff09; Time Limit: 1000MS Memory limit: 65536K 题目描述 建立对象数组&#xff0c;内放5个学生数据&#xff08;学号是字符串类型、成绩是整型&#xff09;&#xff0c;设立max函数&#xff0c;用指向对象的指针作函数参…

如何利用计算机实现非线性转换,2013《数字信号处理》期末复习(填空选择判断)真题解析...

一、填空、选择、判断&#xff1a;1. 一线性时不变系统&#xff0c;输入为 x (n )时&#xff0c;输出为y (n ) &#xff1b;则输入为2x (n )时&#xff0c;输出为 2y(n) &#xff1b;输入为x (n-3)时&#xff0c;输出为 y(n-3) 。2. 线性时不变系统离散时间因果系统的系统函数为…

Windows FFMPEG开发环境配置

1.去FFMPEG网站上下载Dev版本的库&#xff0c;里面有我们需要的头文件和lib文件&#xff0c;然后下载Shared版本的库&#xff0c;里面有我们需要的dll文件 http://ffmpeg.zeranoe.com/builds/ 记得区分32位和64位的库&#xff0c;这里碰到一个大坑&#xff0c;就是我下载的是6…

Ant命令行操作

Ant命令行操作 Ant构建文件可以将项目编译&#xff0c;打包&#xff0c;測试&#xff0c;它是Apache软件基金会jakarta文件夹中的一个子项目&#xff0c;具有跨平台性&#xff0c;操作简单&#xff0c;并且非常easy上手。 关于Ant执行&#xff0c;能够在项目中找到build.xml直接…

如何用用计算机名访问共享打印机,局域网怎么连接共享打印机共享

在局域网内各个版本系统共存的时候&#xff0c;win7版本的计算机连接共享打印机的时候就无法调度网络资源&#xff0c;导致无法添加和使用共享打印机&#xff0c;给办公带来不便下面是小编为大家整理的关于&#xff0c;一起来看看吧!共享打印机之前的准备&#xff1a;1、确保跟…