http://hihocoder.com/problemset/problem/1403
小Hi平时的一大兴趣爱好就是演奏钢琴。我们知道一个音乐旋律被表示为长度为 N 的数构成的数列。小Hi在练习过很多曲子以后发现很多作品自身包含一样的旋律。 旋律可以表示为一段连续的数列,相似的旋律在原数列不可重叠,比如在1 2 3 2 3 2 1 中 2 3 2 出现了一次,2 3 出现了两次,小Hi想知道一段旋律中出现次数至少为两次的旋律最长是多少?
我感觉hihocoder上讲的还是非常清楚的。 求出来\(height\)数组之后,就是一个二分,找到长度为\(k-1\)的子序列的最大最小值就可以了,非常的裸。
1 |
|
http://hihocoder.com/problemset/problem/1407
小Hi平时的一大兴趣爱好就是演奏钢琴。我们知道一个音乐旋律被表示为长度为 N 的数构成的数列。小Hi在练习过很多曲子以后发现很多作品自身包含一样的旋律。 旋律可以表示为一段连续的数列,相似的旋律在原数列不可重叠,比如在1 2 3 2 3 2 1 中 2 3 2 出现了一次,2 3 出现了两次,小Hi想知道一段旋律中出现次数至少为两次的旋律最长是多少?
因为两次这个情况非常特殊,所以我们可以把字典序相邻的,整体公共前缀长度\(>k\)的打包,然后求一下最近的位置\(ma\)和最远的位置\(mi\),用\(ma-mi>=k\)来判断这个公共前缀是否重复两次。
1 |
|
http://hihocoder.com/problemset/problem/1415
小Hi平时的一大兴趣爱好就是演奏钢琴。我们知道一个音乐旋律被表示为长度为 N 的数构成的数列。小Hi在练习过很多曲子以后发现很多作品中的旋律有共同的部分。 旋律是一段连续的数列,如果同一段旋律在作品A和作品B中同时出现过,这段旋律就是A和B共同的部分,比如在abab 在 bababab 和 cabacababc 中都出现过。小Hi想知道两部作品的共同旋律最长是多少?
思路比较显然,就是把字符串合起来排个序,然后判断一下相邻字典序的后缀是不是属于两个串,感觉也可以推广到多个串?
1 |
|
小Hi平时的一大兴趣爱好就是演奏钢琴。我们知道一个音乐旋律被表示为长度为 N 的数构成的数列。小Hi在练习过很多曲子以后发现很多作品中的旋律有重复的部分。 我们把一段旋律称为(k,l)-重复的,如果它满足由一个长度为l的字符串重复了k次组成。 如旋律abaabaabaaba是(4,3)重复的,因为它由aba重复4次组成。 小Hi想知道一部作品中k最大的(k,l)-重复旋律。
http://hihocoder.com/problemset/problem/1419 神奇的结论!
1 |
|