解题报告————最长前缀 Longest Prefix

这是一篇关于最长前缀问题的解题报告,作者分享了在洛谷上遇到该题目的经历,从最初的暴力尝试导致TLE,到后来理解并应用DP方法解决问题的过程。在思路部分,强调了读入字符串的技巧和暴力循环DP的运用。具体方法中提到,通过比较每个位置的字符来判断是否构成前缀,并在后续进行了优化以获得AC(Accepted)。总结中指出,应尽量减少时间复杂度。
摘要由CSDN通过智能技术生成

最易懂的题解

题目描述

题目描述

我洛谷上的博客

我洛谷上的博客


做题时的垂死挣扎

最先看到这道题,非常开心。哈哈一笑,暴力,然后快乐TLE

请大家以我为戒,做题前先看标签。

然后在看到DP后,我傻眼了。(我打的就是dp啊,怎么会错一个点)

我盯着电脑,看着题,想了50多分钟无关的事后。。。我终于开始了打代码


思路

读入时需要注意一下字符串的技巧。

然后你就暴力循环dp

我最开始TLE一个点是因为,我顺便把连成长度为 K 的前缀的方法总数也顺便求了一下

具体方法

每向后移一个字母,就循环一下元素,看看当前元素是否与这序列 从当前位置向前遍

历所的串相等

for(k = i;k > i - a[j].k[11];k--)
{
   
    it--;
    if(a2[k] != a[j].k[it])
	{
   
        able = 1;
    	break;
    }
}

dp[k - 元素.size()] == 1

才将


dp[k] = 1;

最后再在一些地方适当优化就可以AC了

我的方法


#include <cstdio>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值