字符串
文章平均质量分 66
1
Gh0st_Lx
ACMer蒟蒻 / 北航研0
展开
-
Codeforces Round #765 (Div. 2) 部分题解D题
CodeForce1625D最大异或集合问题描述给定一个数组a[1-n],求解一个集合,使得集合内任意两个元素的异或值都不小于k输入格式第一行,包含两个整数n,kn,kn,k第二行,包含nnn个整数,表示数组a[1−n]a[1-n]a[1−n]0≤a[i]<230,2≤n≤3×105,0≤k<2300\le a[i]<2^{30}, 2\le n\le 3 \times 10^5,0\le k < 2 ^ {30}0≤a[i]<230,2≤n≤3×105,0≤k&原创 2022-01-21 17:26:55 · 379 阅读 · 0 评论 -
算法学习笔记(2):Trie树【字典树】
Trie树前言Trie树,又称字典树、前缀树。主要用于解决统计、排序和存储大量的字符串但是不仅限于字符串,比如一个数,它的二进制形式可以看成一个仅由0和1组成的字符串,如果一个trie仅由这些二进制的字符串组成,那么这棵树称为01trie树故有很多位运算(异或)的问题也可以用trie树解决指01tire树核心思想根节点为空,除根节点以外每个节点只包含一个字符从根节点到某一个有标记的节点,路径上经过的字符连接起来,为该节点对应的字符串为什么是有标记?比如我只有一原创 2022-01-21 17:25:42 · 152 阅读 · 0 评论 -
最小表示法(字符串)
算法思想破环成链,将一个环,直接复制一个相同字符串,接到链后面,即stringstringstring aaa;a=a+aa=a+aa=a+a,接下来就是移动i,j指针,初值I=0,J=1保证ij指针比较时都不相同然后就是k指针++,进行比较以下有三种情况如果 s[i+k]>s[j+k]那么就说明,i这边这一串更小,直接说明i指针开头长度为n的串不是最小表示,也同样说明i+1,i+2……i+k也同样不是最小表示,因为我可以取对应的j+1,j+2……j+k为首的字符串,s[i+1,i+k原创 2021-04-29 22:37:51 · 121 阅读 · 0 评论 -
P3375 【fail数组】KMP字符串匹配
大意原文链接定义一个字符串 s的 border 为 s的一个非 s 本身的子串 t,满足 t 既是 s 的前缀,又是 s 的后缀。对于 s2s_2s2,你还需要求出对于其每个前缀 s′s's′,你需要求出对于其每个前缀 s′s's′ 的最长 border t′t't′的长度。个人理解以及思路fail数组个人习惯从0开始,代表他的board长度,用之前的next数组,无法知道他的board长度,因为是代码块之间相同部分的合并,而且0的情况包含==s[0]和!=s[0]都从这个地方开始,所以不能这样原创 2021-04-26 21:44:06 · 262 阅读 · 0 评论 -
KMP算法实现
KMP算法的重难点,就是当BF算法匹配失效的时候,我们下一步要怎么办,KMP算法就用next[]数组来实现这个操作一、引入它是通过分析P的特征,对P进行预处理,然后在其与S匹配的时候就可以跳过一些字符串,实现快速匹配的目的。指向S的i指针永不回溯,而会一直往后走到底。KMP在任何情况下,时间复杂度都为O(n+m).二、注意点以及如何理解一个很显然的思路,对于子串[0,next-1]和[i-next,i-1]两个如果一模一样的话,那么当p[i]处不匹配的时候,就可以回溯到p[next[i]],(.原创 2021-04-25 22:25:32 · 97 阅读 · 0 评论