自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

转载 HDU 3518 Boring counting (后缀自动机)

统计至少出现两次的不重叠子串的个数后缀数组可做,所以我用后缀自动机考虑到任意子串都包含在sam的某个状态中,所以对于某个状态st,只要| endpos(st) | >= 2则状态中长度 <= ( max( endpos( st ) ) - min( endpos ( st ) )的子串都是满足条件的所以只需要求出两个数组L[ i ],R[ i ],分别表示endpos...

2019-09-25 09:23:00 156

转载 hiho #1449 : 后缀自动机三·重复旋律6

K = 1..length(S)求出所有长度为K的子串中出现次数最多的子串的出现次数| endpos(st) |就是st这个状态包含的子串在S中出现的次数在parent tree上自底向上累加| endpos |,考虑特殊情况:当前状态包含S的前缀,则额外+1,最后统计答案即可#include <bits/stdc++.h>#define Cpy(a, b) memc...

2019-09-20 16:06:00 178

转载 HDU 5769 Substring (后缀数组)

题意:给定一个字符串和字符X,问有多少个包含X的不同子串考虑后缀数组求不同子串的方法 : $ \sum_{i=1}^{n}(len+1-(sa[i]+height[i])) $可以看出,对于每个i所贡献的所有子串都是以 sa[i] 开始,分别以 sa[i] + height[i] + 1 , sa[i] + height[i] + 2 ··· len 结尾的子串,所以只需要考虑在区间...

2019-09-16 17:33:00 143

转载 HDU 5008 Boring String Problem ( 后缀数组 )

题意:给定一个字符串,q次询问,每次询问给定一个数k,查询原串的所有不同子串中字典序第k小的子串在原串中的开始和结束位置,若有多个答案则输出最小的开始位置,不存在输出0 0后缀自动机经典问题,所以我用后缀数组预处理sum数组记录不同字符串的个数,即sum[i] = len - sa[i] + 1 -height[i] + sum[i-1] (len为原串长度)对于每...

2019-09-09 21:45:00 128

转载 2019 CCPC 网络赛第三题 K-th occurrence 后缀数组+划分树+ST表+二分

题意:给你一个长度为n的字符串,每次询问给出三个数:L , R , K,表示原串 L 到 R 的子串在原串第K次出现的首字母的位置解题思路:对子串的大量操作,不难想到后缀数组(后缀树/后缀自动机不会,所以没想到),注意到子串s[L.....R]必然是某一个后缀的前缀,所以所有前缀是该子串的后缀的排名(即rank数组的值)必定连续,也就是说在后缀数组(sa数组)中,下标是连续的,那么就...

2019-08-24 00:48:00 178

转载 若干结论和定理(持续更新)

gcd(xa- 1 , xb- 1) = xgcd(a , b)- 1 (x>1,a,b>0) (HDU 2685)gcd(fib[ m ] , fib[ n ]) = fib[ gcd(m , n) ] fib是斐波那契数列gcd(fib[ m ] , fib[ n ]) = fib[ gcd(m , n) ]lcm(ka , kb) = k...

2019-08-21 09:35:00 117

转载 法雷(法里)序列

定义:  对任意给定的一个自然数n,将分母小于等于n的不可约的真分数按升序排列,并且在第一个分数之前加上0/1,在最后一个分数之后加上1/1,这个序列称为n级法雷数列,即法雷数列是0和1之间最简分数升序排列的数列,所以n级法雷数列的个数即为 满足 1 <= a < b <= n && gcd( a , b ) == 1 的二元组( a , b )的数...

2019-08-18 15:15:00 1225

转载 HDU 3374 String Problem (KMP+最大最小表示法)

题意:输出目标字符串最小表示的下标和数量,最大表示的下标和数量题解:最大最小表示法模板题,数量也好求,用KMP的next数组求循环节即可(字符串循环节)#include<cstring>#include<cstdio>using namespace std;const int maxn=1000010;char s[maxn];in...

2019-08-13 15:40:00 93

转载 字符串循环节 POJ2406 Power Strings 为例

题意:找到字符串一个循环节使其循环次数最大,输出最大循环次数,没有循环节输出1题解:KMP的next数组,next[ i ]表示前 i 个字符相同前后缀的最大长度,所以next[ len ]表示整个字符串的相同前后缀的最大长度,len-next[len]就是最小循环节的长度了,如果len % (len-next[len])==0,答案即为len / (len-nx[len]),否则...

2019-08-13 15:23:00 169

转载 2019牛客多校第八场 A All-one Matrices

题意:在01矩阵中求极大全1矩阵数量极大全1矩阵满足以下两个条件:1.矩阵内元素全部由1构成2.该矩阵不是其他全1矩阵的子矩阵题解:枚举每一行,以该行作为矩阵的底,利用单调栈处理出该行上最大全1矩阵,并判断该矩阵有没有可能向下扩展#include <bits/stdc++.h>using namespace std;typedef long l...

2019-08-11 16:01:00 100

转载 初学python爬虫,记录一下第一个程序

这个程序是实现对NITOJ题面信息的简单爬取因为有些题目的题面,input,output的描述是用<p>标签,有些用<div>标签,有些不用标签,直接写在大的<div>下的,而这程序只识别<p>标签下的文本,所以就有了那个奇怪的话=。=(对不起,请换一个题)。因为初学,所以程序比较残疾因为是第一次实现,所以想记录一下路过大佬...

2019-08-09 11:14:00 94

转载 贪心+二分 O(nlogn)求LIS(最长上升子序列)并记录路径

如果用dp求LIS的话,记录路径是比较简单的,只要在更新dp数组的时候同时记录路径,最后找LIS长度的时候同时找到终点,通过终点逆向就能找到LIS路径了(这是我临时想的,可能有更好的方法,不保证正确性)for (int i = 1; i <= n; i++) for (int j = 1; j < i; j++) if (a[j] <...

2019-08-07 21:08:00 357

转载 2019HDU多校第六场 HDU6635 Nonsense Time

题意:给你一个n的排列p,再给你一个n的排列k,一开始所有p不可用,对于每个ki表示下标为k1~ki的p可用,求当前可用的所有p的最长上升子序列(可能表达的不是很清楚,这里看题面)题解:题意等价于一个完整的排列按照一定顺序依次删除每个数,然后计算每次操作后的 LIS 长度。这样就好办了,首先在 O(nlogn) 的时间内求出 LIS,并记录一个 LIS(不会记录路径看这里),当删除 ...

2019-08-07 20:09:00 111

转载 C语言中rand()函数及time库相关

rand()函数rand() 函数原型是int rand(void),它会返回一个从0到RAND_MAX的整数(RAND_MAX是C 语言标准库 <stdlib.h> 中定义的一个宏 0x7fff 即32767)但是仅仅用rand()返回的结果是不变的,因为rand()函数是根据一个数(我们称之为种子)通过固定的公式计算而来的,但是计算机开机后,这个种子的值是定了的...

2019-08-06 18:39:00 440

转载 python3列表操作

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型。创建列表创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:>>> list1 = ['Zeronera', 'Python3', 2019, 3.14]>>> list2 = [1, 2, 3, [4...

2019-08-06 10:23:00 138

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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