首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 01字串

最近的一些文章都可能会很碎,写到哪里是哪里,过一阵子会具体的整理一遍,这里其它的类型题先往后排一排,因为蓝桥最后考的也就是对题目逻辑的理解能力,也就是dp分析能力了,所以就主要目标定在这里,最近的题目会很散,很多,基本上都是网罗全网的一些dp练习题进行二次训练,准备比赛的学生底子薄的先不建议看啊,当然,脑子快的例外,可以直接跳过之前的一切直接来看即可,只需要你在高中的时候数学成绩还可以那就没啥问题,其实,dp就是规律总结,我们只需要推导出对应题目的数学规律就可以直接操作,可能是一维数组,也可能是二维数组,总体来看二维数组的较多,但是如果能降为的话建议降为,因为如果降为起来你看看时间复杂度就知道咋回事了,那么在这里祝大家能无序的各种看明白,争取能帮助到大家。

01

序列自动机

今天刚学了序列自动机感觉挺妙的; 这个就是给你一个母串,再给一下子串让你判断哪些子串是他的子串 这时候我们可以先对母串进行预处理一下: 用一个二维数来记录第i个位置后面的每个字母出现的第一个位置,dp[i][j]表示第 i 个位置以后字母 j 第一次出现的位置;当这个预处理结束后我们在查找的时候就可以找到这个字母的位置后再从这个位置查找下个字符这样一直跳着来查询就可以很快的查找结束了 预处理 我们可以从后向前慢慢的遍历这样一个循环就好了,但是注意存储的时候需要从第一个数开始,初始化的时候把数组初始化为 -1 ;比如 第 i+1 个字符是 a 那么dp[i][a]=i+1;其他的字符都是dp[i][b]=dp[i+1][b]; 查找 i=0; 直接从dp[i][x] (x为需要判断的子串的第一个字符);然后每次更新 i 的位置,顺序的遍历需要判断的子串的每个字符就可以了,一旦遇到 -1 就结束说明不可能是;

04
领券