1040 统计单词个数 2001年NOIP全国联赛提高组
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 黄金 Gold

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

输入描述 Input Description
第一行为一个正整数(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时循环控制变量范围一定要把握好,我刚开始40分,改一个+1得60,再改一个2变1得80,加一个判断条件就AC了╮(╯▽╰)╭
—————————————最熟悉的龙套——————————————
解题思路:跟其他划分性DP的想法基本一致,前i个字母分成j个部分可以取出l个字母单独作为一部分(好像说的很混乱,还是看方程吧)
f[i][j]=max(f[i][j],f[i-l][j-1]+{(i-l+1)到j中单词个数})

#include<cstdio>
#include<cstring>
#include<iostream>
#include<string>
using namespace std;
int n,p,k,s,f[201][41],flag[201];//flag判断单词开头是否重复
string s1="",s2[7],s3;
int ff(int x,int y)
{x--;y--;//字符串起始下标为0,所以自减int ans=0;memset(flag,false,sizeof(flag));string s4=s1.substr(x,y-x+1);for (int i=1;i<=s;i++){int m=s4.find(s2[i],0);while (m>=0&&m<=s4.length()&&!flag[m+x])//m+x指总字符串s1的下标{flag[m+x]=true;ans++;m=s4.find(s2[i],m+1);//继续搜索下一个同样的单词}}return ans;
}
main()
{scanf("%d",&n);for (int q=1;q<=n;q++){scanf("%d%d",&p,&k);for (int i=1;i<=p;i++) {cin>>s3;s1+=s3;}scanf("%d",&s);for (int i=1;i<=s;i++) cin>>s2[i];memset(f,0,sizeof(f));//因为要多次读入,所以要初始化for(int i=1;i<=k;i++)for (int j=i;j<=s1.length();j++)for (int l=1;l<=j;l++)if ((j-l)>=i-1)//若j-l<i-1,则这些字母(j-l)不可能分成i-1份f[j][i]=max(f[j-l][i-1]+ff(j-l+1,j),f[j][i]);}printf("%d",f[s1.length()][k]);
}

【codevs1040】【01NOIPTG】统计单词个数,字符串的划分DP相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. [NOIP2001] 统计单词个数

    题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(该字串以每行 20个字母的方式输入,且保证每行一定为 20个).要求将此字母串分成 k 份,且每份中包含的单词个数加起来总数最大. 每份 ...

  9. mysql计算单词的个数_统计单词个数

    统计单词个数 统计单词个数的功能是封装在Linux驱动中的. Linux驱动 Linux系统将每一个驱动都映射成一个文件,为设备文件或驱动文件,都保存在/dev目录中.与Linux驱动交换数据变成了与 ...

最新文章

  1. swift-video-generator:图片加音频生成视频及多视频合并库及演示
  2. Java课程主观题作业_JAVA课程作业01
  3. SAP WM 业务部门Unplanned工单消耗导致WM层面单据异常问题之分析
  4. v380云存储怎么用_云智中国-百度智能云薄磊:海量无限存储,助力产业智能化升级...
  5. Windows Azure Cloud Service (27) 在Windows Azure发送邮件(上)
  6. style和theme:一组属性值
  7. mysql-server rpm_Mysql rpm包安装
  8. tabbar角标 小程序_【沃行课堂】恭喜你遇到“坑”,小程序踩坑指南
  9. 分页选择器v-selectpage的介绍
  10. lstm预测单词_从零开始理解单词嵌入| LSTM模型|
  11. 给我一个支点,我要撬动地球。
  12. linux 模拟usb键盘,在Linux下模拟键盘按键
  13. 关于小米历史官方刷机包
  14. linux卸载杀毒软件clama,centos 6 安装clamav杀毒软件查毒
  15. 以太网(报头格式 | MTU | ARP)
  16. hive 配置参数说明大全
  17. 联通宽带拨号开机自动连接
  18. matlab和Excel的交互 非xlsread和xlswrite(1-Excel基础)
  19. 如何剪切视频,只截取视频中间的一部分
  20. 配置mpls vpn MCE组网

热门文章

  1. angularjs组件间通讯_angular组件间通讯的实现方法示例
  2. 设计模式笔记二十五:访问者模式
  3. Android 数据访问之Internal Storage 数据保存在内存 demo+笔记
  4. WORD单元格底部内容不见了怎么办?
  5. 13个美国大学生最常用的社交网络
  6. php自学建议_如何高效自学PHP?
  7. python里的拼接_Python拼接字符串的7种方法总结
  8. android 高质量游戏,你玩过几款?2013年度十大安卓热门游戏大盘点
  9. 天津大学考研计算机专业课的教材,天津大学(专业学位)计算机技术研究生考试科目和考研参考书目...
  10. c语言列车调度 栈,这个用栈调度火车的程序到底是怎么回事?