CF557E.Ann and Half-Palindrome

提高+/省选-

通过率:0%

时间限制:1.50s

内存限制:512MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Tomorrow Ann takes the hardest exam of programming where she should get an excellent mark.

On the last theoretical class the teacher introduced the notion of a half-palindrome.

String t is a half-palindrome, if for all the odd positions i () the following condition is held: t__i = t|t| - i + 1, where |t| is the length of string t if positions are indexed from 1. For example, strings "abaa", "a", "bb", "abbbaa" are half-palindromes and strings "ab", "bba" and "aaabaa" are not.

Ann knows that on the exam she will get string s, consisting only of letters a and b, and number k. To get an excellent mark she has to find the k-th in the lexicographical order string among all substrings of s that are half-palyndromes. Note that each substring in this order is considered as many times as many times it occurs in s.

The teachers guarantees that the given number k doesn't exceed the number of substrings of the given string that are half-palindromes.

Can you cope with this problem?

明天,安将参加一场编程考试,这是她最艰难的一次考试,她必须取得优异的成绩。

在最后一节理论课上,老师介绍了“半回文串”(half-palindrome)的概念。

字符串 tt 被称为半回文串,当且仅当对所有奇数位置 ii(),均满足如下条件:

ti=t∣t∣−i+1,t_i = t_{|t| - i + 1},

其中 ∣t∣|t| 表示字符串 tt 的长度(位置编号从 1 开始)。例如,字符串 "abaa"、"a"、"bb"、"abbbaa" 是半回文串,而 "ab"、"bba" 和 "aaabaa" 不是。

安知道,在考试中她将获得一个仅由字母 a 和 b 组成的字符串 ss,以及一个整数 kk。为了取得优异成绩,她必须在 ss 的所有半回文子串中,找出按字典序排列的第 kk 个字符串。注意:每个子串在字典序列表中出现的次数,等于它在 ss 中作为子串出现的次数(即重复子串需重复计数)。

老师保证所给的 kk 不超过字符串 ss 中半回文子串的总数。

你能否解决这个问题?

输入格式

The first line of the input contains string s (1 ≤ |s| ≤ 5000), consisting only of characters 'a' and 'b', where |s| is the length of string s.

The second line contains a positive integer k — the lexicographical number of the requested string among all the half-palindrome substrings of the given string s. The strings are numbered starting from one.

It is guaranteed that number k doesn't exceed the number of substrings of the given string that are half-palindromes.

输入的第一行包含一个字符串 ss(1 ≤ ∣s∣ ≤ 50001 ≤ |s| ≤ 5000),该字符串仅由字符 'a' 和 'b' 组成,其中 ∣s∣|s| 表示字符串 ss 的长度。

第二行包含一个正整数 kk —— 在给定字符串 ss 的所有半回文子串中,按字典序排列后,所请求的字符串的序号(从 1 开始编号)。

保证 kk 不超过给定字符串中半回文子串的总数。

输出格式

Print a substring of the given string that is the k-th in the lexicographical order of all substrings of the given string that are half-palindromes.

输出给定字符串的所有半回文子串中,按字典序排列的第 k 个子串。

输入输出样例

  • 输入#1

    abbabaab
    7

    输出#1

    abaa
  • 输入#2

    aaaaa
    10

    输出#2

    aaa
  • 输入#3

    bbaabb
    13

    输出#3

    bbaabb

说明/提示

By definition, string a = _a_1_a_2... a__n is lexicographically less than string b = _b_1_b_2... b__m, if either a is a prefix of b and doesn't coincide with b, or there exists such i, that _a_1 = _b_1, _a_2 = _b_2, ... a__i - 1 = b__i - 1, a__i < b__i.

In the first sample half-palindrome substrings are the following strings — a, a, a, a, aa, aba, abaa, abba, abbabaa, b, b, b, b, baab, bab, bb, bbab, bbabaab (the list is given in the lexicographical order).

根据定义,字符串 a=a1a2…ana = a_1a_2\ldots a_n 在字典序上小于字符串 b=b1b2…bmb = b_1b_2\ldots b_m,当且仅当以下两个条件之一成立:

  • aa 是 bb 的前缀,且 a≠ba \ne b;
  • 存在某个下标 ii,使得 a1=b1, a2=b2, …, ai−1=bi−1, ai<bia_1 = b_1,\, a_2 = b_2,\, \ldots,\, a_{i-1} = b_{i-1},\, a_i < b_i。

在第一个样例中,半回文子串如下所示:a、a、a、a、aa、aba、abaa、abba、abbabaa、b、b、b、b、baab、bab、bb、bbab、bbabaab(该列表按字典序排列)。

输入解题思路,AI测评打分。不知道怎么写?

首页