首页 > 其他分享 >字符串优化

字符串优化

时间:2024-10-23 17:21:34浏览次数:1  
标签:子串 01 lcp 卷积 字符串 mathcal 优化 sim

字符串问题

\(\mathcal O(nm)-\mathcal O(1)\) 比较字符串子串大小

令 \(lcp_{x,y}=\operatorname{lcp}(s[x\sim n],s[y\sim n])\),有

\[lcp_{x,y}= \left\{\begin{aligned} &lcp_{x+1,y+1}+1&&s_x=s_y\\ &0&&s_x\not=s_y \end{aligned}\right. \]

可以 \(\mathcal O(n^2)\) 求出。

比较两个子串 \(s[l_1\sim r_1]\) 与 \(s[l_2\sim r_2]\)。

  • 若 \(lcp_{l_1,l_2}\ge \min(r_1-l_1+1,r_2-l_2+1)\),直接比较子串长度。

  • 否则比较 \(s[l_1+lcp_{l_1,r_1}]\) 与 \(s[l_2+lcp_{l_1,l_2}]\)

代码如下:

bool cmp(pa a,pa b){
    int lena=a.r-a.l+1,lenb=b.r-b.l+1,LCP=lcp[a.l][b.l];
    if(LCP>=lena||LCP>=lenb)return lena<lenb;
    return s[a.l+LCP]<s[b.l+LCP];
}

01串相同长度汉明距离

Q:求01串A的所有长度与01串B相同的子串的汉明距离

我们考虑算卷积,将 \(B\) 翻转并在后面加 \(0\) ,\(S\) 卷积相乘。
结果的第 \(P\) 位的值为 \(\sum_{j=0}^PB_jA_{P-j}=k\) ,对于只有 01 的串,只有 \(1\times 1=1\) ,因此 \(k\) 代表 \(B_j\) 同 \(A_{P-j}\) 中有多少位同时是 \(1\),也就是说串 \(B_0\) 到 \(B_P\),与串 \(A_P\) 到 \(A_0\) 中 \(1\) 的匹配数量。如果利用 \(FFT\) 算卷积,则是 \(\mathcal O(n\log n)\) 的 。
同样,我们将 \(0\) 换成 \(1\) ,\(1\) 换成 \(0\),再做一次卷积,这样可以求出有多少 \(0\) 和 \(0\) 是匹配的。
最后用 \(|B|\) 减去所有匹配中的最大值即可。

标签:子串,01,lcp,卷积,字符串,mathcal,优化,sim
From: https://www.cnblogs.com/lupengheyyds/p/18497880

相关文章

  • 代码训练营第22天|补第9天的KMP算法,28. 找出字符串中第一个匹配项的下标|459.重复的子
    前置知识文章链接:https://programmercarl.com/0028.实现strStr.html#思路KMP的经典思想就是:当出现字符串不匹配时,可以记录一部分之前已经匹配的文本内容,利用这些信息避免从头再去做匹配。前缀表:next数组就是一个前缀表(prefixtable)。前缀表是用来回退的,它记录了模式串与主......
  • 字符串的切分及其拓展
    假如有以下email数据“[email protected],[email protected],[email protected],..”现需要把email中的用户部分和邮件地址部分分离,分离后以键值对应的方式放入HashMap思路:我们要将Email的用户部分和邮件地址部分分离,分离后以键值对应的方式放入HashMap,要思考一下怎么将一整个字符变为aa......
  • Vite 优化配置方案
    前言Vite是一个快速的前端构建工具,特别适用于现代前端框架如Vue和React。为了进一步提升项目的性能和开发体验,我们可以对Vite进行一些优化配置。本文将介绍一些常见的优化策略,并提供详细的配置示例和注释。1.安装必要的插件首先,我们需要安装一些常用的Vite插件来帮......
  • unity资源自动优化
    #ifUNITY_EDITORusingSystem.Collections;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Text;usingUnityEditor;usingUnityEngine;publicclassAutoOptimizeAssetes:UnityEditor.AssetPostprocessor{///<summary>///音频资......
  • 【Unity】发布微信小游戏-资源优化
    资源优化方向记录:1、首包场景里面使用的字体重新生成一个,只包含首包可能使用到的字符,可以将几M的字体缩到几时KB 2、减少大尺寸贴图使用,合理压缩图片格式3、使用AssetStudio等工具检查首包资源,查看包含了那部分资源,是否引用,是否过大 这里查到了一部分无使用的资源贴图......
  • YOLO11改进:卷积变体系列篇 | DCNv3可形变卷积基于DCNv2优化 | CVPR2023
     ......
  • 回溯法求解简单组合优化问题
    此为课题组所指导本科生和低年级硕士生学习组合优化问题汇报所用教材:北京大学屈婉玲教授《算法设计与分析》课程资料:https://www.icourse163.org/course/PKU-1002525003承诺不用于任何商业用途,仅用于学术交流和分享更多内容请关注许志伟课题组官方中文主页:https://JaywayXu......
  • Spring Boot环境下论坛网站的架构与优化
    3系统分析3.1可行性分析通过对本论坛网站实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本论坛网站采用SSM框架,JAVA作为开发语言,是基于WEB平台的B/S架构系统。(1)Java......
  • C# 生成不重复的短字符串
    最近,因工作需要生成一个不重复的随机字符串,园子里查了没有找到合适的。找了其他的作为参考并修改了下,记录一下。///<summary>///可用字符///</summary>staticchar[]sc;///<summary>///起始时间///</summary>staticDateTimestartTime;///<summary>///字符串前缀///<......
  • 代码随想录算法训练营第八天|leetcode344.反转字符串、leetcode541. 反转字符串II、卡
    1leetcode344.反转字符串题目链接:344.反转字符串-力扣(LeetCode)文章链接:代码随想录视频链接:字符串基础操作!|LeetCode:344.反转字符串_哔哩哔哩_bilibili自己的思路:直接使用python的内置函数reverse进行一个操作1.1自己的代码1.1.1python的内置函数classSolution:......