首页 > 其他分享 >Day-6

Day-6

时间:2024-02-21 22:15:04浏览次数:24  
标签:AB 前缀 题解 重看 next 长度 Day

字符串

  • 难点:理解算法过程

  • 二分 + 哈希 可以 $O(n log n) $ 完成 Manacher 和 exKMP

Manacher

P5446

  • R 是 S 的一个前缀
  • R[1, i] 的后缀的最大回文半径为 r
    • 一次翻折:i + r == n 成立
    • 多次翻折:目标串合法 且 目标串是一个回文串
  • 题解2

exKMP

  • \(z[i]\) 表示 \(S\) 和 \(S[i, n]\) 的最长公共前缀
  • 流程:见视频

P7114

  • 固定 AB 的长度, 随着 i 增加, F(C) 只有两种情况

    1. C 的前缀中有 2n 个 AB, F(C) = F(i, n)
    2. C 的前缀中有 2n + 1 个 AB, F(C) = F(1, n)
  • 题解1具体实现?

  • 题解3

KMP

  • next 数组:最长的【后缀 == 前缀】的长度

    image-20240220094835834

P3435

  • 最长周期 = i - 最小 next
  • 画图理解

P2375

  • num :长度 <= $ \frac{i}{2} $​ 的 next 的个数
  • 重看 (题解1已掌握)

P5829 失配树

  • i <- next[i] 的关系构成的树

  • 为什么是一棵树

    • i > next[i]
  • Lca

HDU 7138

  • 条件1:[1, x] 是 S 的 border
  • 条件2:长度 > i / 2, \(len[i - x + 1, x] = 2x - i\)
    • \(2x 和 i 关于 k 同余\)
  • 建失配树,条件 1 自然满足
  • 条件 2 在树上Dfs

KMP自动机

  • 自动机:为给他一个字符串,他能实现一个功能
  • 构建(PPT)
  • 代码:
image-20240220111454660

Trie

P2922

  • 关系
    • S 是 T 的前缀
    • T 是 S 的前缀
  • 字典树

AC自动机

P5357

P2414

P3041

P2444

  • 以上重看

选讲

P5329

  • 通用方法
  • 如果能 \(O(1)\) 判断 si, sj的大小, 就可以重载比较函数, sort
  • 设 i < j, k = Lcp
    • 转化为 s[i + k + 1] 和 s[j + k] 的大小关系
  • ???

ICPC

  • 暴力:\(n^3\) DP
  • 状态2维, 转移
  • ???

P3426

二分一个前缀作为印章

O(n) Check (好像没法O(n) ?)

  • f(i) 为印出前缀 i 的最小印章长度

  • 印章既是前缀,又是后缀(类似border)

  • 中间不确定

  • 两个结论

    • f(i) = i 或 next(i) (??不能是next[next[i]]?)
  • ???重看

标签:AB,前缀,题解,重看,next,长度,Day
From: https://www.cnblogs.com/wangyangjena/p/18024065

相关文章

  • Day-5
    DP背包多重背包单调队列???P4141退背包由暴力到优化每删一个,做一次背包$n^2m$前后缀F(i,j)前i件,G(i,j)第i-n件$nm^2$退掉i物品$f(i,j)=\sum{f(i-1,x)}$$f(j)-=f(j-w_i)$拓展:去掉i,求max分治背包目的:除i......
  • Day-4
    模拟赛S+N---【玄英计划】---2月18日---模拟测#2【补题】-比赛-梦熊联盟T115分:状压,50分:$O(n^2)$$O(n^2)$的check:赛时代码正解:贪心根据鸽巢原理:$a_1,a_2,a_3$至少会有两项是同一个等差数列的前两项$O(n)$T2第二种路径:$u_i\gev_......
  • Day-7 模拟赛题解
    Day-7模拟赛题解S+N---【玄英计划】---2月21日---模拟测#3【补题】-比赛-梦熊联盟T1数据点3-5枚举每一个问号对应的字母Kmp,把s当作模式串匹配T\(O(26^k|T|)\),k是?的个数代码(我也不知道为啥T了,鸽着)正解有种被诈骗了的感觉根据期望的可加性,答案等于......
  • 代码随想录 day57 最长公共子序列 不相交的线 最大子数组和
    最长公共子序列dp[i][j]:长度为[0,i-1]的字符串text1与长度为[0,j-1]的字符串text2的最长公共子序列为dp[i][j]主要就是两大情况:text1[i-1]与text2[j-1]相同,text1[i-1]与text2[j-1]不相同如果text1[i-1]与text2[j-1]相同,那么找到了一个公共元素,所以dp......
  • day38 动态规划part1 代码随想录算法训练营 746. 使用最小花费爬楼梯
    题目:746.使用最小花费爬楼梯我的感悟:哈哈,我居然自己独立写出来了,确实,只要定义定清楚了,哪怕定的含义只有自己能看懂,只要定义一致就可以求出解决来!!!我真是个大天才!!理解难点:听课笔记:代码示例:classSolution:defminCostClimbingStairs(self,cost:List[int])->int:......
  • # 代码随想录算法训练营day01 | leetcode 704. 二分查找、35.搜索插入位置、34.在排序
    题目链接:704.二分查找-简单题目描述:给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示......
  • 爬虫03_days
    selenium介绍#1由于requests不能执行js---》逐个分析ajax请求--》模拟发送获取数据 -使用requests爬取的数据很大概率跟在浏览器中看到的不一样-requests不能执行js#2seleniumselenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaS......
  • day38 动态规划part1 代码随想录算法训练营 70. 爬楼梯
    题目:70.爬楼梯我的感悟:居然自己先写出来了!!继续努力!!理解难点:听课笔记:我的代码:classSolution:defclimbStairs(self,n:int)->int:ifn==1:return1dp=[0]*(n+1)dp[1]=1dp[2]=2foriinran......
  • 代码随想录 day56 最长递增子序列 最长连续递增序列 最长重复子数组
    最长递增子序列dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度状态转移方程的含义:位置i的最长升序子序列等于j从0到i-1各个位置的最长升序子序列+1的最大值。最长连续递增序列dp[i]:以下标i为结尾的连续递增的子序列长度为dp[i]。如果nums[i]>nums[i-1......
  • UESTC 2024 寒假集训 - Day4
    Preface万恶的psk搬的全是Atcoder上的题目,然后理所当然的后面题目全是CountingProblem了作为计数苦手直接当场暴毙,3h写完前面的8个题然后直接跑路AtCoderarc148_amodM开场差点被签到腐乳了,没发现答案不是\(1\)就是\(2\)直接傻掉了由于\(M=2\)时答案至多为\(2\),因此只需......