洛谷 P2031 脑力达人之分割字串
来源:互联网 发布:规范查询软件 编辑:程序博客网 时间:2024/05/17 01:53
题目描述
现在有一个字符串,你可以对这个字符串进行拆分,如abcvsdaas可以拆分为abc|vs|d|aasa,现在再给你一个字典,要求分割成的每一个子串必须要有包含其中的任意一个单词。那么最多可以分为几个子串呢?
【题目分析】
随机跳题,跳到一道水题,动态规划+trie树。
【代码】
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int t[150001][30],root=1,cnt=1;int end[150001],f[301],n,l1,l2;char s1[301],s2[301];void insert(){ int now=root; scanf("%s",s2+1); l2=strlen(s2+1); for (int i=1;i<=l2;++i) { if (!t[now][s2[i]-'a']) t[now][s2[i]-'a']=++cnt; now=t[now][s2[i]-'a']; } end[now]++;}void dp(){ memset(f,0,sizeof f); f[0]=0;l1=strlen(s1+1); for (int i=1;i<=l1;++i) { f[i]=max(f[i-1],f[i]); int now=1,p=i; while (now) { now=t[now][s1[p]-'a']; if (end[now]) f[p]=max(f[p],f[i-1]+1); p++; } } int ans=0; for (int i=1;i<=l1;++i) ans=max(ans,f[i]); printf("%d\n",ans);}int main(){ scanf("%s",s1+1); scanf("%d",&n); for (int i=1;i<=n;++i) insert(); dp();}
0 0
- 洛谷 P2031 脑力达人之分割字串
- 洛谷 P2031 脑力达人之分割字串
- 字符串-----P2031 脑力达人之分割字串
- SQL 字串分割函数
- Delphi根据字符分割字串成数组
- 字符串的分割和字串截取
- 字符串分割成字串都是回文
- 脑力风暴之小毛驴历险记(1)----好多胡萝卜(上)
- 脑力风暴之小毛驴历险记(1)----好多胡萝卜(下)
- 字串之全排列
- 字串之定向排列
- 超级脑力
- 脑力锻炼
- 脑力游戏
- 脑力锻炼
- 关于中英数字混的字串符分割问题
- delphi 按给定字符分割整个字串到StringList中
- STL---按行读取数字串,并分割转为数字
- Android 图片裁剪
- 浏览器访问服务器时,都发生了什么?
- 孪生素数问题
- 动态信号周期性检测
- Faster RCNN 训练自己的数据集(Matlab,python版本)及制作VOC2007格式数据集
- 洛谷 P2031 脑力达人之分割字串
- 工厂模式
- 进程间通信方式之信号量
- Tiny210(S5PV210) U-BOOT(六)----DDR内存配置
- vim去掉蓝色
- 类模板
- Java分支和循环语句及方法的使用
- PHP Ajax 跨域问题最佳解决方案
- Spark 2.0.1 运行环境的安装与测试