308002: CF1450G. Communism

Memory Limit:32 MB Time Limit:1 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Communism

题意翻译

有 $n$ 名工人站成一排。用一个长度为 $n$ 的字符串 $s$ 表示他们的工作,其中第 $i$ 个人的工作为 $s_i$。定义一个有理数 $k=\frac{a}{b}$ 作为参数。 每次操作中,可以选择一个至少存在一名工人的工作 $x$。设所有工作为 $x$ 的工人的位置为 $i_1,\dots,i_m(i_1<\dots<i_m)$,若 $k\cdot(i_m-i_1+1)\le m$,则可以再选择另一个至少存在一名工人的工作 $y$,并将所有工作为 $x$ 的人的工作替换成 $y$。 若可以通过若干次(含 $0$ 次)操作将所有人的工作替换成 $x$,则称工作 $x$ 是可达到的。输出可达到的工作的个数,并将它们按照字典序输出。 注意内存限制。

题目描述

Please pay attention to the unusual memory limit in this problem. In a parallel universe, Satan is called "Trygub". For that reason, the letters of his namesake were deleted from the alphabet in ancient times. The government has $ n $ workers standing in a row and numbered with integers from $ 1 $ to $ n $ from left to right. Their job categories can be represented as a string $ s $ of length $ n $ , where the character $ s_i $ represents the job category of the $ i $ -th worker. A new law will be approved to increase the equality between the workers. The government decided to make everyone have the same job category by performing the following operation any number of times (possibly zero). There is a fixed rational parameter $ k=\frac ab $ describing how easy it is to convince the public, and it will be used to determine the success of an operation. In an operation, the government first selects a job category $ x $ with at least one worker at the current moment. Suppose $ i_1,\ldots, i_m $ ( $ i_1<\ldots<i_m $ ) are the positions of all the workers with job category $ x $ . If $ k\cdot (i_m-i_1+1)\le m $ , the government is able to choose any job category $ y $ with at least one worker at the current moment and change the job category of all workers with job category $ x $ to job category $ y $ . If it is possible to make all workers have job category $ x $ , we say that $ x $ is obtainable. Can you tell the government the set of obtainable job categories?

输入输出格式

输入格式


The first line contains three integers $ n, a, b $ ( $ 1 \le n \le 5000 $ , $ 1\le a\le b\le 10^5 $ ) — the number of workers and the numerator and denominator of the parameter $ k $ , respectively. The second line contains a string $ s $ of length $ n $ , consisting of lowercase English characters — the job categories of each worker. The characters 't', 'r', 'y', 'g', 'u', and 'b' do not appear in the string $ s $ .

输出格式


Print an integer $ c $ equal to the number of obtainable job categories followed by $ c $ space-separated characters — the obtainable job categories sorted in the lexicographical order.

输入输出样例

输入样例 #1

7 1 2
comicom

输出样例 #1

3 c m o

说明

The first operation must select the job category 'i' because all other job categories cannot satisfy the condition, therefore 'i' is not obtainable. Below is showed how to obtain 'c', 'm', and 'o'. The square brackets denote the segment containing all workers of the selected category, the red color denotes this category and the blue color denotes the new category after the change. 3. Get 'c': 1. ( $ \texttt{com}\color{red}{\texttt{[i]}}\texttt{com} \rightarrow \texttt{com}\color{#1E90FF}{\texttt{[o]}}\texttt{com} $ ) 2. ( $ \texttt{c}\color{red}{\texttt{[o}}\texttt{m}\color{red}{\texttt{o}}\texttt{c}\color{red}{\texttt{o]}}\texttt{m} \rightarrow \texttt{c}\color{#1E90FF}{\texttt{[m}}\texttt{m}\color{#1E90FF}{\texttt{m}}\texttt{c}\color{#1E90FF}{\texttt{m]}}\texttt{m} $ ) 3. ( $ \texttt{c}\color{red}{\texttt{[mmm}}\texttt{c}\color{red}{\texttt{mm]}} \rightarrow \texttt{c}\color{#1E90FF}{\texttt{[ccc}}\texttt{c}\color{#1E90FF}{\texttt{cc]}} $ ) 4. Get 'm': 1. ( $ \texttt{com}\color{red}{\texttt{[i]}}\texttt{com} \rightarrow \texttt{com}\color{#1E90FF}{\texttt{[o]}}\texttt{com} $ ) 2. ( $ \texttt{c}\color{red}{\texttt{[o}}\texttt{m}\color{red}{\texttt{o}}\texttt{c}\color{red}{\texttt{o]}}\texttt{m} \rightarrow \texttt{c}\color{#1E90FF}{\texttt{[c}}\texttt{m}\color{#1E90FF}{\texttt{c}}\texttt{c}\color{#1E90FF}{\texttt{c]}}\texttt{m} $ ) 3. ( $ \color{red}{\texttt{[cc}}\texttt{m}\color{red}{\texttt{ccc]}}\texttt{m} \rightarrow \color{#1E90FF}{\texttt{[mm}}\texttt{m}\color{#1E90FF}{\texttt{mmm]}}\texttt{m} $ ) 5. Get 'o': 1. ( $ \texttt{com}\color{red}{\texttt{[i]}}\texttt{com} \rightarrow \texttt{com}\color{#1E90FF}{\texttt{[c]}}\texttt{com} $ ) 2. ( $ \color{red}{\texttt{[c}}\texttt{om}\color{red}{\texttt{cc]}}\texttt{om} \rightarrow \color{#1E90FF}{\texttt{[m}}\texttt{om}\color{#1E90FF}{\texttt{mm]}}\texttt{om} $ ) 3. ( $ \color{red}{\texttt{[m}}\texttt{o}\color{red}{\texttt{mmm}}\texttt{o}\color{red}{\texttt{m]}} \rightarrow \color{#1E90FF}{\texttt{[o}}\texttt{o}\color{#1E90FF}{\texttt{ooo}}\texttt{o}\color{#1E90FF}{\texttt{o]}} $ )

Input

题意翻译

有 $n$ 名工人站成一排。用一个长度为 $n$ 的字符串 $s$ 表示他们的工作,其中第 $i$ 个人的工作为 $s_i$。定义一个有理数 $k=\frac{a}{b}$ 作为参数。 每次操作中,可以选择一个至少存在一名工人的工作 $x$。设所有工作为 $x$ 的工人的位置为 $i_1,\dots,i_m(i_1<\dots<i_m)$,若 $k\cdot(i_m-i_1+1)\le m$,则可以再选择另一个至少存在一名工人的工作 $y$,并将所有工作为 $x$ 的人的工作替换成 $y$。 若可以通过若干次(含 $0$ 次)操作将所有人的工作替换成 $x$,则称工作 $x$ 是可达到的。输出可达到的工作的个数,并将它们按照字典序输出。 注意内存限制。

加入题单

算法标签: