WangMeow --- ᶘ ᵒᴥᵒᶅ ฅ^•ﻌ•^ฅ

欲穷算法千里目,更上编程一层楼!

排序:
默认
按更新时间
按访问量

【ACM-ICPC 2018 青岛赛区网络预赛】H. Traveling on the Axis ---- 前缀和+规律

题目传送门 做法: 我们很容易推出,对于每一个位置到终点,先判断起始位置是1or0,是1初始化为1,是0初始化为0 从当前位置往后相邻两项如果不一样,那么+1,如果一样+2 举个例子: 1 0 1 1位置: 1 1+1 1+1+1 2位置:    2    2+1 3位置:    ...

2018-10-19 21:22:13

阅读数:2

评论数:0

【ACM-ICPC 2018 焦作赛区网络预赛】H. String and Times ---- 后缀自动机

题目传送门 做法: 计算出每个状态下的endpos,通过endpos在区间内统计maxlen[st] - minlen[st]+1 即 maxlen[st] - minlen[st]+1 = l[st] - l[slink[st]]; 模板题 AC代码: #include&lt...

2018-10-19 12:24:40

阅读数:10

评论数:0

[Hihocoder](1445)后缀自动机二·重复旋律5 ---- SAM构造

题目传送门 做法: 我们知道SAM中 l[st] 数组的意义是状态st的最长子串的长度 从前一状态到当前状态的转移所增加的子串数量: l[st] - l[slink[st]] AC代码: #include<bits/stdc++.h>...

2018-10-17 21:06:02

阅读数:10

评论数:0

[Hihocoder](1449)后缀自动机三·重复旋律6 ---- 不同长度下出现次数最多的子串(SAM)

题目传送门 做法: 原题中小Hi 的讲解循序渐进,比我好,好好吸收他的讲解即可。 不过这里要说一个自己异议的地方,就是自己认为这一步没有必要。但是网上包括题目本身都加了这句话,我没加我也AC了。所以对此持疑惑态度。 因为我们知道ans[i] 一定>= a...

2018-10-19 11:39:26

阅读数:5

评论数:0

[HDU](4622)Reincarnation ---- 后缀自动机or后缀数组(区间内不同子串的个数)

题目链接 做法: SA做法: 复杂度O(t * q * (n*log(n))) 暴力解法,注:(q>n) 7e8 险过…… 对于每次查询,把这段区间内的字符串,建立后缀数组,然后用(n-1)-sa[i]-height[i]计算。 SAM做法: 复杂度O(n^2+q) 4e...

2018-10-18 16:42:42

阅读数:4

评论数:0

[HDU](2594)Simpsons’ Hidden Talents ---- 扩展KMP

题目传送门 做法: 扩展KMP模板题 扩展KMP: 用来求文本串所有后缀与模式串的LCP 详细教程:扩展KMP算法 AC代码: #include<bits/stdc++.h> #define IO ios_base::s...

2018-10-15 19:22:05

阅读数:4

评论数:0

[洛谷] (P3804)【模板】后缀自动机 ---- SAM(模板题)

题目传送门 做法: 考察SAM的基本概念,即各个状态的endpos集合的大小怎么求? 我们从parent树上自底向上跑,类似树的遍历(即回溯过程),去统计集合的大小即可。 AC代码: #include<bits/stdc++.h> #define I...

2018-10-18 12:44:25

阅读数:3

评论数:0

[Hihocoder](1175)拓扑排序·二 ---- 简单拓扑排序

题目传送门 做法: 开一个数组num用来记录和传递病毒数量 AC代码: #include<bits/stdc++.h> #define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.ti...

2018-10-17 22:11:16

阅读数:7

评论数:0

【后缀自动机学习笔记】

前言 历经两天,看了大大小小的后缀自动机的知识讲解,看来看去,还是觉得HihoCoder上的SAM系列讲解的最白话最让人容易理解。 HihoCoder 讲解是按照 问题提出—>引入SAM概念---->模拟SAM---->构造SA...

2018-10-17 20:55:12

阅读数:7

评论数:0

[Hihocoder](1441)后缀自动机一·基本概念 ---- 模拟

题目传送门 做法: 原文中对SAM概念的讲解很详细了,值得入门的时候先学习这个~ 模拟即可 AC代码: #include<bits/stdc++.h> #define IO ios_base::sync_with_std...

2018-10-16 20:49:27

阅读数:6

评论数:0

[HDU](6153)A Secret ---- 扩展KMP

题目传送门 题意: 给你两个串s1,s2,让你求s2的所有后缀在s1中出现的频率乘以后缀长度的和。 做法: 逆向思维,我们发现如果将s1,s2翻转,s2原来的所有后缀就变成了前缀。 我们知道扩展KMP中extend[i]的含义是文本串后缀i与模式串的最长公共前缀的长度 如果我们对s1,s2使用扩展...

2018-10-15 21:51:59

阅读数:2

评论数:0

[HDU](1686)Oulipo ---KMP(串)★

Oulipo Problem Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e'. He was a member o...

2017-08-24 17:05:03

阅读数:72

评论数:0

[Hihocoder](1419)后缀数组四·重复旋律4 ---- 后缀数组(最长连续重复子串)★

题目传送门 做法: 原题给的提示已经讲解的非常详细,这里说一下自己对下面式子的理解 lcp( p - ( l - lcp (p,p+l) % l ) , p-l + lcp (p,p+l) % l +l) lcp(p,p+l)/l +1 是连续重复子串的个数 lcp(p,p+l)%l ...

2018-10-15 14:18:51

阅读数:3

评论数:0

Codeforces Round #516 (Div. 2) D. Labyrinth ---- BFS+思维

题目传送门 做法: 优先选取列,然后在向左右扩展。 然鹅,有思路,却不会处理,看了本场Rank1,有双端队列巧妙处理列和行的优先级,才发现处理更简洁+易懂。ORZ 我们优先将列放到队首,因为列是不需要消耗步数的,然后再将左右放到队尾,然后依次访问+标记,即可。 AC代码: #include&a...

2018-10-15 12:46:24

阅读数:8

评论数:0

[POJ](2406)Power Strings ---- KMP(连续重复子串)

题目传送门 做法: KMP利用最小循环节周期 那么 周期个数 = len/ len - nex[len] 即是答案 看了罗神的论文,试着用后缀数组做一下,TLE,这个题倍增会被卡常,DC3可过,但是时间复杂度远大于KMP。 总结: KMP为最优解 有时候同一个题,从不同的做法切入,即是A不掉,也...

2018-10-13 20:17:21

阅读数:2

评论数:0

[URAL](1297)Palindrome ---- 后缀数组 or Manacher(最长回文子串)

做法: 最长回文子串两种解法: 1. Manacher 复杂度O(n) 2. 后缀数组+RMQ 复杂度O(n*log(n)) AC代码: //Manacher #include <iostream> #include <cs...

2018-10-13 16:09:26

阅读数:1

评论数:0

[Hihocoder](1415)后缀数组三·重复旋律3 ---- 后缀数组(最长公共子串)

题目传送门 做法: 我们知道,字符串中任意一个子串都是某个后缀的前缀 我们也知道了Height数组的含义是排名为i的后缀与排名i-1的后缀的最长公共前缀,即就是最长公共子串。 现在题意让我们找两个串的最长公共子串,普通的KMP是无法解决这样的匹配的问题,因为KMP是完全匹配,而本题可出现子串的匹...

2018-10-11 20:56:18

阅读数:8

评论数:0

[SPOJ](694)Distinct Substrings ----后缀数组(不相同子串的个数)

题目传送门 做法: 一个字符串的某一子串一定是某一后缀的前缀 而且有一个很容易发现的性质 排完序后的后缀数组 suffix(sa[i]),suffix(sa[i+1]),suffix(sa[i+2]),…… ,suffix(sa[n]) 相邻两后缀之间增加的子串数量为 (n -1)- sa[i]...

2018-10-12 22:14:31

阅读数:8

评论数:0

[POJ](1743)Musical Theme ---- 后缀数组(最长不可重叠重复子串)

题目传送门 题意: 给你一个长度为n的序列,序列中的元素大小为[1,88]。 现在让你找重复主题:主题指序列中的一个子串,其中满足以下条件 1.长度>=5 2.子串元素间的差值相等。 3.重复出现的同一主题不能有公共部分。 求满足题意的最大主题长度,即就是最长不可重...

2018-10-11 17:22:02

阅读数:3

评论数:0

[Hihocoder](1407)后缀数组二·重复旋律2 ---- 后缀数组(最长不可重叠重复子串)

题目传送门 做法: 最长可重叠重复子串可以利用Height数组轻易解决。 不可重叠其实利用Height数组也是很巧妙地~ 同样基于二分的思路,我们二分这个长度k,找到Height数组>=k的,把它们这些后缀分为一组,再判断后缀最大值与最小值的差值是否&...

2018-10-11 16:07:04

阅读数:2

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭