自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《算法竞赛进阶指南》周期

周期 一个字符串的前缀是从第一个字符开始的连续若干个字符,例如”abaab”共有5个前缀,分别是a, ab, aba, abaa, abaab。 我们希望知道一个N位字符串S的前缀是否具有循环节。 换言之,对于每一个从头开始的长度为 i (i>1)的前缀,是否由重复出现的子串A组成,即 AAA…A (A重复出现K次,K>1)。 如果存在,请找出最短的循环节对应的K值(也就是这个前缀串的所有可能重复节中,最大的K值)。 输入格式 输入包括多组测试数据,每组测试数据包括两行。 第一行输入字符串S的长

2020-07-29 23:26:23 254

原创 《算法竞赛进阶指南》 后缀数组

后缀数组 后缀数组 (SA) 是一种重要的数据结构,通常使用倍增或者DC3算法实现,这超出了我们的讨论范围。 在本题中,我们希望使用快排、Hash与二分实现一个简单的O(nlog2n)的后缀数组求法。 详细地说,给定一个长度为 n 的字符串S(下标 0~n-1),我们可以用整数 k(0≤k<n) 表示字符串S的后缀 S(k~n-1)。 把字符串S的所有后缀按照字典序排列,排名为 i 的后缀记为 SA[i]。 额外地,我们考虑排名为 i 的后缀与排名为 i-1 的后缀,把二者的最长公共前缀的长度记为 .

2020-07-27 00:26:42 239

原创 《算法竞赛进阶指南》 回文子串的最大长度

回文子串的最大长度 如果一个字符串正着读和倒着读是一样的,则称它是回文的。 给定一个长度为N的字符串S,求他的最长回文子串的长度是多少。 输入格式 输入将包含最多30个测试用例,每个测试用例占一行,以最多1000000个小写字符的形式给出。 输入以一个以字符串“END”(不包括引号)开头的行表示输入终止。 输出格式 对于输入中的每个测试用例,输出测试用例编号和最大回文子串的长度(参考样例格式)。 每个输出占一行。 输入样例: abcbabcbabcba abacacbaaaab END 输出样例: Cas.

2020-07-25 00:38:51 252

原创 《算法竞赛进阶指南》兔子与兔子

兔子与兔子 很久很久以前,森林里住着一群兔子。 有一天,兔子们想要研究自己的 DNA 序列。 我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DNA 序列可能包含 26 个小写英文字母)。 然后我们每次选择两个区间,询问如果用两个区间里的 DNA 序列分别生产出来两只兔子,这两个兔子是否一模一样。 注意两个兔子一模一样只可能是他们的 DNA 序列一模一样。 输入格式 第一行输入一个 DNA 字符串 S。 第二行一个数字 m,表示 m 次询问。 接下来 m 行,每行四个数字 l1,r1,l2,r2

2020-07-23 00:08:04 402

原创 《算法竞赛进阶指南》 雪花雪花雪花

雪花雪花雪花 有N片雪花,每片雪花由六个角组成,每个角都有长度。 第i片雪花六个角的长度从某个角开始顺时针依次记为ai,1,ai,2,…,ai,6。 因为雪花的形状是封闭的环形,所以从任何一个角开始顺时针或逆时针往后记录长度,得到的六元组都代表形状相同的雪花。 例如ai,1,ai,2,…,ai,6和ai,2,ai,3,…,ai,6,ai,1就是形状相同的雪花。 ai,1,ai,2,…,ai,6和ai,6,ai,5,…,ai,1也是形状相同的雪花。 我们称两片雪花形状相同,当且仅当它们各自从某一角开始顺时针或

2020-07-18 23:16:07 446

原创 《算法竞赛进阶指南》邻值查找

邻值查找 给定一个长度为 n 的序列 A,A 中的数各不相同。对于 A 中的每一个数 Ai,求: min1≤j<i|Ai−Aj| 以及令上式取到最小值的 j(记为 Pi)。若最小值点不唯一,则选择使 Aj 较小的那个。 输入格式 第一行输入整数n,代表序列长度。 第二行输入n个整数A1…An,代表序列的具体数值,数值之间用空格隔开。 输出格式 输出共n-1行,每行输出两个整数,数值之间用空格隔开。 分别表示当i取2~n时,对应的min1≤j<i|Ai−Aj|和Pi的值。 数据范围 n≤10^5

2020-07-09 23:13:45 343

原创 《算法竞赛进阶指南》最大子序和

最大子序和 输入一个长度为n的整数序列,从中找出一段长度不超过m的连续子序列,使得子序列中所有数的和最大。 注意: 子序列的长度至少是1。 输入格式 第一行输入两个整数n,m。 第二行输入n个数,代表长度为n的整数序列。 同一行数之间用空格隔开。 输出格式 输出一个整数,代表该序列的最大子序和。 数据范围 1≤n,m≤300000 输入样例: 6 4 1 -3 5 1 -2 3 输出样例: 7 求取自序和(或子串和)我们首先想到的是利用前缀和数组求取,当我们利用前缀和数组可以求取最大的一个自序和,但不能保证

2020-07-07 16:04:50 752

原创 《算法竞赛进阶指南》 双端队列

双端队列 达达现在碰到了一个棘手的问题,有N个整数需要排序。 达达手头能用的工具就是若干个双端队列。 她从1到N需要依次处理这N个数,对于每个数,达达能做以下两件事: 1.新建一个双端队列,并将当前数作为这个队列中的唯一的数; 2.将当前数放入已有的队列的头之前或者尾之后。 对所有的数处理完成之后,达达将这些队列按一定的顺序连接起来后就可以得到一个非降的序列。 请你求出最少需要多少个双端序列。 输入格式 第一行输入整数N,代表整数的个数。 接下来N行,每行包括一个整数Di,代表所需处理的整数。 输出格式 输

2020-07-06 14:33:56 406

原创 《算法竞赛进阶指南》蚯蚓

蚯蚓 蛐蛐国最近蚯蚓成灾了! 隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓。 蛐蛐国里现在共有 n 只蚯蚓,第 i 只蚯蚓的长度为 ai ,所有蚯蚓的长度都是非负整数,即可能存在长度为0的蚯蚓。 每一秒,神刀手会在所有的蚯蚓中,准确地找到最长的那一只,将其切成两段。 若有多只最长的,则任选一只。 神刀手切开蚯蚓的位置由有理数 p 决定。 一只长度为 x 的蚯蚓会被切成两只长度分别为 ⌊px⌋ 和 x−⌊px⌋ 的蚯蚓。 特殊地,如果这两个数的其中一个等于0,则这个长度为0的蚯蚓也

2020-07-02 22:41:03 384

空空如也

空空如也

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

TA关注的人

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