1470 最长前缀

P1470 [USACO2.3]最长前缀 Longest Prefix P1470 [USACO2.3]最长前缀 Longest Prefix 题目大意: 给定一个集合 PPP,任意使用 PPP 中的元素,问能拼出目标串 SSS 的最长前缀是多大 思路: 定义 dp[i]dp[i]dp[i] 表示 前缀 iii 是否可以拼成,那么枚举 iii ,然后再枚举集合元素 ttt,状态转移: if(i >= t.size() && dp[i-t.size()] && s.substr(i-t.size(), t.size()) == t) 阅读详情

1470 最长前缀

我这个菜鸡读题读了好长时间,就是不理解题是啥意思
从“一个集合P中的元素可以串起来,并且能重复使用,组成一个序列S”,可以重复使用,那么因该是一个动态规划
但是一个身为懵新菜鸡的我,并不会用动态规划
虽然是动态规划,但是用KMP进行枚举还是可以的
吧…
我用模拟加上KMP调了三次就是不行?

#include<bits/stdc++.h>
using namespace std;
const int SIZE=2e5+5;
string A,B[205],T;
int m[205];//记录长度
int next[1005];
bool book[SIZE]; 
int n,ans;
void sol(int x)//统计前缀表 
{
	int j=0;
	next[1]=0;
	for(int i=1;i<m[x];i++)
	{
		while(j>0&&B[x][j+1]!=B[x][i+1]) j=next[j];
		if(B[x][j+1]==B[x][i+1]) j++;
		next[i+1]=j;//注意这里我调了6次,因为从1开始,所以加一
	}
	return ;
}
int kmp(int x)
{
	int j=0,ans=0;
	for(int i=0;i<n;i++)
	{
		while(j>0&&B[x][j+1]!=A[i+1]) j=next[j];
		if(B[x][j+1]==A[i+1]) j++;
		if(j==m[x])//统计完成后 
		{
			for(int k=i+1-m[x]+1;k<=i+1;k++)//首字母到终点 
				book[k]=1;//标记已经使用过了 
			j=0;
		}
	}
	return ans;
}
void check()
{
	for(int i=1;i<=n;i++)//统计 
	{
		if(book[i]) ans++;
		else break; 
	}
	return ;
 } 
int main()
{
	int len=1;
	while(1)//记录集合元素
	{
	
		cin>>B[len];
		B[len]='&'+B[len];
		m[len]=B[len].size()-1;//记录每一个集合元素长度 
		if(B[len]=="&.")//结束标识. 
		{
			len--;
			break; 
		}
		len++;	 
	}
	while(cin>>T)
	{
		A+=T;//记录所有的字符串 
	}
	A='&'+A;//第一个为0,下标忽略
	n=A.size()-1;//文本串的长度 
	for(int i=1;i<=len;i++) 
		sol(i);
	  
	for(int i=1;i<=len;i++)//枚举每一个元素进行配对 
		kmp(i);
	
	check();//统计 
	cout<<ans<<endl;
	return 0;
}
题解:洛谷 P1470 [USACO2.3] 最长前缀 Longest Prefix 题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的。生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣。,用连续的以空格分开的字符串表示。设计一个程序,输入一个元素集合以及一个大写字母序列 ,设。中的元素可以串起来(元素可以重复使用)组成一个序列。,长度为,用一行或者多行的字符串来表示,每行不超过。的最长前缀,使其可以分解为给出的集合。的行,集合中的元素没有重复。#普及+# #KMP# 阅读详情

相关推荐

数据集分享 | IWR1642呼吸心跳数据集

雷达开源数据库 数据集

【调皮连续波】雷达技术领域知识博主 3204

洛谷 1470 最长前缀 Longest Prefix

洛谷 1470最长前缀 Longest Prefix 有一个字符串S,求他的从s[1]开始的可以被匹配的最长长度。 a[i][k] == j表示第i个字符开始的连续j个字符可以被匹配(即p中有对应的元素) if( !a[i][k] &amp;&amp; !dp[i - a[i][k]]) dp[i] = 1; 注意读入。 #include &lt;iostream&gt; #in...

yu0046的博客 599

python怎样按某一列值拆分Excel表格

pd.ExcelWriter@python #用python按某一列拆分Excel工作表,将内容写入一个工作簿 本次以“按照表中的某一列,将一张表格拆分为多张表”的需求为例,简单介绍这个过程中用到的pd.ExcelWriter,及每一句的作用。 如上表《学生.xlsx》,假设有14万行28列,请按照学校名,拆分表格(不想用复制粘贴)。 ##代码及解释如下 import pandas as pd from time import time#用来计算时间,展示进度,减少焦虑 in_ws='学生.xlsx'#

learn_get的博客 6785

Luogu P1470 最长前缀 Longest Prefix

Luogu P1470 最长前缀 Longest Prefix 注释 这道题与上一篇博客的题几乎一样 解析 有点麻烦的地方就是字符串的输入 方法一:类dp Code #include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<alg...

banqizi0761的博客 218

用户视角下的vfsglobal预约困境:从注册到登录的全流程避坑指南

本文详细解析了vfsglobal签证预约系统从注册到登录的全流程操作,帮助用户避开常见技术陷阱。针对IP限制、DNS解析、浏览器缓存等登录障碍提供实用解决方案,并揭示账号管理的隐藏规则与支付环节的延时处理技巧,助力用户高效完成签证预约。

ol78901234的博客 871

如何从RHEL 8升级到RHEL 9

Red Hat 于 2022 年 5 月 17 日宣布全面推出 RHEL 9。这是 RHEL(Red Hat Enterprise Linux)的最新版本,它具有许多功能和增强功能。

u012748257的博客 1019

洛谷P1470 最长前缀

P1470 最长前缀 Longest Prefix 题目描述 在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的。生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣。 如果一个集合 P 中的元素可以通过串联(元素可以重复使用,相当于 Pascal 中的 “+” 运算符)组成一个序列 S ,那么我们认为序列 S 可以分解为 P 中的元素。元素不一定要全部出现(如...

weixin_30548917的博客 202

超声波清洗机拆解实录:从电路板到换能器,一文看懂内部构造(附高清图)

本文详细拆解了超声波清洗机的内部构造,从电路板设计到换能器工作原理,揭示了其核心技术。通过高清图片和详细分析,展示了功率放大电路、高频变压器及压电换能器等关键部件,为电子爱好者和维修技术人员提供了实用的故障诊断和元件二次利用指南。

grape的博客 1182

P1470 最长前缀 Longest Prefix

P1470 最长前缀 Longest Prefix   题目描述 在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的。生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣。 如果一个集合 P 中的元素可以通过串联(元素可以重复使用,相当于 Pascal 中的 “+” 运算符)组成一个序列 S ,那么我们认为序列 S 可以分解为 P 中的元素。元素不一定要全部出现(如下例中B

Follow My Heart 383

Echarts - 去掉图表上的横线和竖线

效果图 默认效果: 变为如下图所示效果: 实现方法 官方配置文档:https://echarts.apache.org/zh/option.html#radar.splitLine 在 xAxis yAxis 配置中分别加入以下代码: splitLine: { show:false }

🏆 前端领域优质创作者 1万+

uniapp [全端兼容] - 详细实现下拉筛选菜单功能组件,下拉式筛选菜单效果,类似电商美团点击筛选项底部弹出列表点击选择后自动收起(详细示例代码,全端兼容小程序、安卓苹果app、h5网页、nvue

uni-app,vue2,vue3,向下弹出菜单包含筛选功能,日期筛选,下拉框选择器,下拉多条件筛选,下拉式筛选菜单,uniApp如何实现条件下拉筛选,Uniapp官方条件筛选组件,下拉框式条件筛选插件组件,最好用的插件组件,多端兼容,下拉菜单筛选,过滤筛选列表,下拉筛选栏,多列联动的条件筛选,下拉菜单地区和筛选,微信小程序,支付宝小程序,h5网页,移动端网站,安卓app,苹果app,nvue,uniapp所有平台兼容,下拉菜单筛选,下拉式条件筛选,下拉列表,点击排序,级联筛选,uniapp实现下拉筛选

🏆 前端领域优质创作者 1万+

最长前缀 Longest Prefix(洛谷 P1470)

最长前缀 Longest Prefix 题目描述 在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的。生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣。 如果一个集合 P 中的元素可以通过串联(元素可以重复使用,相当于 Pascal 中的 “+” 运算符)组成一个序列 S ,那么我们认为序列 S 可以分解为 P 中的元素。元素不一定要全部出现(如下例中BBC就没有出现)。举个例...

不知所云的博客 987

Whisper 模型在嘈杂环境中的表现:降噪与增强技术

本报告系统分析了OpenAI Whisper模型在嘈杂环境中的表现机制,重点揭示其内在降噪能力的技术边界,并结合语音增强(SE)、时频分析等前沿技术提出优化方案。内容覆盖从基础概念(如噪声类型对ASR的影响)到理论框架(模型架构与数学形式化),再到实际应用(端到端部署策略)的全链路分析,同时通过案例研究与可视化工具(如梅尔频谱对比图)降低复杂概念的认知门槛。核心结论指出:Whisper的多语言预训练虽提升了泛化性,但在低信噪比(SNR<5dB)场景下需结合前端降噪或联合训练技术以突破性能瓶颈。

AI 原生应用开发的博客 488

USACO 最长前缀 Longest Prefix

USACO 最长前缀 Longest Prefix

Flere825的博客 1539

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

P1470 最长前缀 Longest Prefix (kmp)

题目描述 在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的。生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣。 如果一个集合 P 中的元素可以通过串联(元素可以重复使用,相当于 Pascal 中的 “+” 运算符)组成一个序列 S ,那么我们认为序列 S 可以分解为 P 中的元素。元素不一定要全部出现(如下例中BBC就没有出现)。举个例子,序列 ABABACABAAB 可以分...

Weng Shihao's blog 237

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

《P1470 [USACO2.3] 最长前缀 Longest Prefix》

摘要:该题目要求设计一个程序,找出给定字符串s的最长前缀s',使其能够由给定的字符串集合P中的元素拼接而成(元素可重复使用)。输入包含多行元素集合P(以单独"."行结束)和字符串s,输出符合条件的最大前缀长度k。例如样例输入中,ABABACABAAB可以由{A,AB,BA,CA,BBC}组成,输出最长前缀长度11。数据规模较大,要求高效处理。

Jasmine_llq的博客 663

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

题解 P1470 【最长前缀 Longest Prefix】

首先看题,题目要求我们求最长匹配的长度,我们不妨如下思考: ​ 对于字符串S,我们从第y位开始搜索(保证前y-1位一定可以是匹配) ​ 从第y位开始生成字符串,若此时生成的字符串在P中出现过,则证明 ​ 此时的字符串可以被匹配到y+i的位置,我们再从y+i+1开始搜索便好了! ​ 而问题的答案就是我们已到达的最大的一个y。 那么问题来了,如果按照上述说法搜索,...

bajiu2822的博客 216

【DP】洛谷 P1470 最长前缀 Longest Prefix

题目描述在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的。生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣。如果一个集合 P 中的元素可以通过串联(元素可以重复使用,相当于 Pascal 中的 “+” 运算符)组成一个序列 S ,那么我们认为序列 S 可以分解为 P 中的元素。元素不一定要全部出现(如下例中BBC就没有出现)。举个例子,序列 ABABACABAAB 可以分解为下

。。。。 712

P1470最长前缀

做到这就是84,最后一个TLE,想了一会怎么改,重新读过题才发现,集合内的元素长度是<=10的,那这就简单了,枚举的时候倒着枚举,然后发现此时需求的长度>10就结束循环,因为不可能找到这么长的字符串了,这也是个关键点。首先,这个s是个多行输入,简单的cin会截断字符串,而且cin的string是没法与EOF比较结束循环的,这也就说明,要用char字符一个个getchar,结束条件就是 ch!输入集合内字符串的时候还好,有.作为结束符,while(cin >> t && t!但到输入s的时候就麻烦了。

aiwangyi6的博客 69

洛谷P1470 最长前缀 Longest Prefix

P1470 最长前缀 Longest Prefix 73通过 236提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交讨论题解 最新讨论 求大神指导,为何错? 题目描述 在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的。生物学家对于把长的序列分...

weixin_30726161的博客 180
上一篇: 1465 剪花布条
下一篇: 1466 Power Strings
CCCCDEV_CCCC
博客等级 码龄6年 18粉丝 381原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值