lcp

后缀数组

我怕爱的太早我们不能终老 提交于 2020-11-22 17:30:34
后缀数组 先下几个常见的定义 $s(i, j)$表示$[i, j]$形成的连续子串 $suf[i]$表示以$i$为开头的后缀 $rank$数组:$rank[i]$表示将$1\sim n$的后缀排序后,$suf[i]$的排名 $sa$数组:$sa[i]$表示将$1 \sim n$的后缀排序后,排第$i$的在哪里 举个例子: sort(a + 1, a + n + 1, cmp); 当我们采用上述代码之后,$a$数组存下的实际就是排第$i$的在哪里 $sa$数组不会相同,因为后缀的长度互不相同 在假想状态下,我们考虑在字符串的某尾加上无限个$0$ 这样子,我们可以使得两个后缀具有相同的长度,便于比较 比如字符串"$abaa$" 我们实际上是在比较这4个字符串的排名: $abaa,baa0,aa00,a000$ 先看一个有趣的事情: 对于字符串$S = S_1 + S_2, T = T_1 + T_2$,且$|S_1| = |S_2|, |T_1| = |T_2|$ 如果$S_1 < T_1$,那么$S < T$ 如果$S_1 = T_1;and;S_2 < T_2$,那么$S < T$ 这要怎么利用呢? 也就是说,我们现在把所有的后缀都看做是长度为$n$的字符串 我们先处理出所有的$s(i, i)$的字典序排名,如果不存在$s(i, i) = s(j, j)$,那么我们的序排好了 否则

牛客练习赛10

▼魔方 西西 提交于 2020-11-09 10:55:18
地址: https://www.nowcoder.com/acm/contest/58#question A(贪心) 略 B(贪心+栈) 略 C(manacher+后缀数组) 分析:   考虑枚举字符串的对称轴在哪   容易发现我们希望从对称轴开始尽可能向两边扩展成为回文串,在不能再扩展的位置就是我们的分割线,然后我们求分割线位置对应两个串的lcp即可(后缀数组实现)   所以可以先manacher跑出p[i]表示以i为中心向两边扩展的最大长度,然后将S1倒序接在S2后面做后缀数组求lcp即可   注意回文串的中心可以在S1也可以在S2中,所以要做两次   事实上,可以直接用后缀数组得到p[i],不需要额外跑manacher   时间复杂度O(nlogn) D(模拟) 略 E(莫队算法+分块) 分析:   以为要莫队算法+平衡树,但实际上可以用分块来代替平衡树   我们把所有可能的出现次数(即1~n)分块,每一块标记出里面"出现次数"的个数,于是每次询问就可以在O(sqrt(n))时间内找到k1对应的“出现次数”   对于每个出现次数,对里面的数字进行分块,也是同样处理,找到k2对应的数字   时间复杂度O(nsqrt(n)+msqrt(n)) F(莫队算法+分块+快速幂分块套路) 分析:   对于一个询问我们可以计算每个数字的贡献,假设数字x出现了y次

计算机网络笔记

和自甴很熟 提交于 2020-11-08 23:20:42
计算机网络 21世纪计算机网络特征—— 数字化 信息化 网络化 三大类网络 ——电信网络 有线电视网络 计算机网络 计算机网络系统由负责信息传递的通信子网和负责信息处理的资源子网组成。 ISP 是掌握 Internet 接口的机构。 计算机网络的发展 ——   面向终端的计算机网络   计算机 - 计算机网络   开放式标准化网络 互联网(连通性,共享) ARPANET 1983 ( TCP/IP ) -1990 基础结构发展三个阶段 ——   从单个网络 ARPANET 向互联网发展   三级结构的互联网(主干网、地区网、校园网【企业网】)   多层次 ISP (互联网服务提供者)结构的互联网 20 世纪 90 年代 万维网 RFC 标准(互联网草案 - 建议标准(开始成为 RFC 文档) - 互联网标准)端系统 互联网工作方式划分 :边缘部分(连接在互联网上的主机及构成),           核心部分(大量网络和连接这些网络的路由器构成)(连通性和交换) 计算机之间的通信 :主机之间程序的通信 端系统通信方式 ——    C/S (客户 - 服务器方式)     客户和服务器都是指通信所涉及的两个应用程序     描述的是进程之间服务和被服务的关系    P2P 方式(对等方式)     不区分服务请求方和提供方,只要都运行对等连接软件就可以进行平等、对等连接通信,共享文档

leetcode LCP 3. 机器人大冒险 java

拥有回忆 提交于 2020-11-02 15:56:01
题目: 力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0)。小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动。指令有两种: U: 向y轴正方向移动一格 R: 向x轴正方向移动一格。 不幸的是,在 xy 平面上还有一些障碍物,他们的坐标用obstacles表示。机器人一旦碰到障碍物就会被损毁。 给定终点坐标(x, y),返回机器人能否完好地到达终点。如果能,返回true;否则返回false。 示例 1: 输入:command = "URR", obstacles = [], x = 3, y = 2 输出:true 解释:U(0, 1) -> R(1, 1) -> R(2, 1) -> U(2, 2) -> R(3, 2)。 示例 2: 输入:command = "URR", obstacles = [[2, 2]], x = 3, y = 2 输出:false 解释:机器人在到达终点前会碰到(2, 2)的障碍物。 示例 3: 输入:command = "URR", obstacles = [[4, 2]], x = 3, y = 2 输出:true 解释:到达终点后,再碰到障碍物也不影响返回结果。 限制: 2 <= command的长度 <= 1000 command由U,R构成,且至少有一个U,至少有一个R 0 <= x <=

计算机网络复习笔记1

南笙酒味 提交于 2020-10-28 14:34:01
复习内容: 1、第一章 概述 2、第二章 物理层 3、第三章 数据链路层 参考:计算机网络(第7版) - 谢希仁 - 电子工业出版社 一、第一章 概述 1、什么是计算机网络 P4 百度解释: 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和 信息传递的计算机系统 计算机网络是由若干结点和连接这些结点的链路组成 计算机网络向用户提供的两个最重要的功能: 连通性 共享 2、计算机网络发展 P5 三大阶段: 第一阶段:从单个网络 ARPANET 向互联网发展的过程。1983 年 TCP/IP 协议成为 ARPANET 上的标准协议。 第二阶段:建成三级结构的因特网:主干网、地区网和校园网(或企业网)。 第三阶段:形成多层次的ISP(Internet Service Provider 因特网服务提供者)结构的因特网 Internet 和 Internet 的区别: internet:通用名词,它泛指由多个计算机网络互连而成的网络。 Internet:专用名词,它指当前全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,它采用 TCP/IP 协议族作为通信的规则,且其前身是美国的 ARPANET 3、CS架构和P2P简介 P11 客户服务器方式(C/S方式)

计算机网络-复习笔记

耗尽温柔 提交于 2020-10-28 13:06:10
本复习笔记基于谢希仁的《计算机网络》第五版教材整理。 由于一些原因笔记并不完整,后来考研复习时的复习PPT可以作为补充:计算机网络笔记 文章目录 《计算机网络》复习笔记 @[toc] 绪论 1.1 计算机网络 1.2 因特网概述 1.3 互联网的组成 P8 1.4 计算机网络的类别 P17 1.5 计算机网络的体系结构 P25 物理层 2.1 物理层下的传输媒体 2.2 关于信道的几个基本概念 2.3 信道复用技术 数据链路层 3.1 使用点对点信道的数据链路层 3.2点对点协议 PPP P70 3.3 使用广播信道的数据链路层 P76 3.4 以太网的MAC层 3.5 扩展的以太网 网络层 4.1 网际协议IP 4.1.1 虚拟互连网络 4.1.2 分类的IP地址 P113 4.1.3 IP地址与硬件地址 4.1.4 地址解析协议ARP 4.1.5 IP数据报 4.2 划分子网 P128 4.3 构造超网(无分类编址CIDR) 4.4 网际控制报文协议ICMP 4.5 路由选择协议 运输层 5.1 运输层协议概述 5.2 用户数据报协议 UDP 5.3 传输控制协议 TCP 5.4 可靠运输的工作原理 绪论 1.1 计算机网络 计算机网络向用户提供的两个最重要的功能: 连通性 共享 1.2 因特网概述 因特网发展的三个阶段: 第一阶段:从单个网络 ARPANET

LeetCode每日一题!!(LCP 01.猜数字)

安稳与你 提交于 2020-10-24 11:37:22
题目 :小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次? 输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。 示例 1: 输入:guess = [1,2,3], answer = [1,2,3] 输出:3 解释:小A 每次都猜对了。 示例 2: 输入:guess = [2,2,3], answer = [3,2,1] 输出:1 解释:小A 只猜对了第二次。 限制: guess的长度 = 3 answer的长度 = 3 guess的元素取值为 {1, 2, 3} 之一。 answer的元素取值为 {1, 2, 3} 之一。 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/guess-numbers 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 : 1.首先设置一个变量times。 2.用if条件语句判断。 Python3的代码 : class Solution : def game ( self , guess : List [ int ] , answer : List [ int ] ) - >

【算法和数据结构】字符串

回眸只為那壹抹淺笑 提交于 2020-10-09 09:50:03
字符集 charset 和字符编码 character encoding 参考:https://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html 字符集是个集合,指明了其支持的所有字符有哪些。字符编码则为字符集中的每个字符指定了一个数字代号,解析的时候把代号替换为具体图形展示给用户。 常用的字符集有: ASCII:包含控制字符,英文,数字等。单字节字符编码,对应的字符编码就是 ASCII 码 GB2312 Unicode:对应的字符编码有: UTF-8:变长字符编码,可以表示任意 Unicode 编码,兼容 ASCII 编码(是 ASCII 的超集)。 UTF-16 UTF-32:4字节编码,定长,效率低 字符串是跟字符集绑定在一起的,每个字符串都要按照特定的字符集进行解析,否则就可能看到乱码。 字符串常见操作 通常在每种语言中,用双引号表示字符串,单引号表示字符。 最长公共前缀 LCP(Longest Common Prefix):表示两个字符串从头开始最长的相同子串。 对字符串及字串求哈希 哈希函数特点: 每个哈希函数的值域是固定的 对于不同的输入,其在值域内的分布大致均匀 同一个输入,哈希值唯一 输入的微小变动也会引起哈希函数值的巨大变化 不同输入,其哈希值可能相同,称为碰撞(冲突),但概率较低 字符串的哈希值

我敢说:你一定也没看到过这么复杂的算法题(Java实现LeetCode LCP 13 寻宝(分队列+BFS+DP))

会有一股神秘感。 提交于 2020-10-08 05:32:57
LCP 13. 寻宝 我们得到了一副藏宝图,藏宝图显示,在一个迷宫中存在着未被世人发现的宝藏。 迷宫是一个二维矩阵,用一个字符串数组表示。它标识了唯一的入口(用 ‘S’ 表示),和唯一的宝藏地点(用 ‘T’ 表示)。但是,宝藏被一些隐蔽的机关保护了起来。在地图上有若干个机关点(用 ‘M’ 表示),只有所有机关均被触发,才可以拿到宝藏。 要保持机关的触发,需要把一个重石放在上面。迷宫中有若干个石堆(用 ‘O’ 表示),每个石堆都有无限个足够触发机关的重石。但是由于石头太重,我们一次只能搬一个石头到指定地点。 迷宫中同样有一些墙壁(用 ‘#’ 表示),我们不能走入墙壁。剩余的都是可随意通行的点(用 ‘.’ 表示)。石堆、机关、起点和终点(无论是否能拿到宝藏)也是可以通行的。 我们每步可以选择向上/向下/向左/向右移动一格,并且不能移出迷宫。搬起石头和放下石头不算步数。那么,从起点开始,我们最少需要多少步才能最后拿到宝藏呢?如果无法拿到宝藏,返回 -1 。 示例 1: 输入: [“S#O”, “M…”, “M.T”] 输出:16 解释:最优路线为: S->O, cost = 4, 去搬石头 O->第二行的M, cost = 3, M机关触发 第二行的M->O, cost = 3, 我们需要继续回去 O 搬石头。 O->第三行的M, cost = 4, 此时所有机关均触发 第三行的M->T

「赛前备战」NOIp2020-提高 图论训练

倖福魔咒の 提交于 2020-10-07 07:46:28
博主太菜,可能会炸联赛,于是恶补一下 QAQ 题目比较基础,动态更新 Tags 生成树 , 最短路 , 差分约束 , 树的直径与重心 , LCA , 树链剖分 , 拓扑序 , 强连通分量 , 割点 , 桥 , 点双连通分量 , 边双连通分量 , 2-SAT , 二分图 , 正/负环 , 最小环 , 数据结构优化建图 , 哈密顿路径/回路 , 欧拉路径/回路 Content 「Codeforces 888G」Xor-MST 生成树 「AtCoder JSC2019 Qual E」Card Collector 生成树 「HDU 4725」The Shortest Path in Nya Graph 最短路 「2018-2019 XIX Open Cup, Grand Prix of Korea」Dev, Please Add This! 2-SAT 「2015 ACM Amman Collegiate Programming Contest」Bridges 边双连通分量 树的直径与重心 「HDU 4370」0 or 1 最短路 最小环 「NOI2019」弹跳 最短路 数据结构优化建图 「Codeforces 1280C」Jeremy Bearimy 「AtCoder AGC018D」Tree and Hamilton Path 树的直径与重心 「APIO2010」巡逻 树的直径与重心