307674: CF1394C. Boboniu and String

Memory Limit:256 MB Time Limit:3 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Boboniu and String

题意翻译

定义“BN-字符串”为仅含有 `B` 和 `N` 两种字符的字符串。 你可以对一个 BN-字符串 $s$ 做以下这些操作: - 删除 $s$ 的任意位置的字符。 - 删除 $s$ 中的一个 `BN` 子串或者 `NB` 子串。 - 在 $s$ 的末尾添加一个 `B` 或者 `N`。 - 在 $s$ 的末尾添加字符串 `BN` 或 `NB`。 我们认为两个 BN-字符串 $s,t$ 是“相似的”,当且仅当: - $s$ 的长度等于 $t$ 的长度(记这个长度为 $l$); - 存在 $1,2,\cdots,l$ 的一个排列 $p$ 使得 $s_{p_i}=t_i$ 恒成立。 定义两个 BN-字符串 $s,t$ 的距离 $\text{dist}(s,t)$ 为最小的操作次数使得 $s$ 与 $t$ 相似,其中每一次操作可以在 $s$ 或 $t$ 上进行。 给定 $n$ 个 BN-字符串 $s_1,s_2,\cdots,s_n$,求一个 BN-字符串 $t$ 使得 $\max\limits_{1\le i\le n}\{\text{dist}(s_i,t)\}$ 最小,输出这个最小值和任意一个满足条件的字符串 $t$。 $1\le n \le 3\times10^5,|s_i|\ge 1,\sum|s_i|\le5\times10^5$

题目描述

Boboniu defines BN-string as a string $ s $ of characters 'B' and 'N'. You can perform the following operations on the BN-string $ s $ : - Remove a character of $ s $ . - Remove a substring "BN" or "NB" of $ s $ . - Add a character 'B' or 'N' to the end of $ s $ . - Add a string "BN" or "NB" to the end of $ s $ . Note that a string $ a $ is a substring of a string $ b $ if $ a $ can be obtained from $ b $ by deletion of several (possibly, zero or all) characters from the beginning and several (possibly, zero or all) characters from the end. Boboniu thinks that BN-strings $ s $ and $ t $ are similar if and only if: - $ |s|=|t| $ . - There exists a permutation $ p_1, p_2, \ldots, p_{|s|} $ such that for all $ i $ ( $ 1\le i\le |s| $ ), $ s_{p_i}=t_i $ . Boboniu also defines $ \text{dist}(s,t) $ , the distance between $ s $ and $ t $ , as the minimum number of operations that makes $ s $ similar to $ t $ . Now Boboniu gives you $ n $ non-empty BN-strings $ s_1,s_2,\ldots, s_n $ and asks you to find a non-empty BN-string $ t $ such that the maximum distance to string $ s $ is minimized, i.e. you need to minimize $ \max_{i=1}^n \text{dist}(s_i,t) $ .

输入输出格式

输入格式


The first line contains a single integer $ n $ ( $ 1\le n\le 3\cdot 10^5 $ ). Each of the next $ n $ lines contains a string $ s_i $ ( $ 1\le |s_i| \le 5\cdot 10^5 $ ). It is guaranteed that $ s_i $ only contains 'B' and 'N'. The sum of $ |s_i| $ does not exceed $ 5\cdot 10^5 $ .

输出格式


In the first line, print the minimum $ \max_{i=1}^n \text{dist}(s_i,t) $ . In the second line, print the suitable $ t $ . If there are several possible $ t $ 's, you can print any.

输入输出样例

输入样例 #1

3
B
N
BN

输出样例 #1

1
BN

输入样例 #2

10
N
BBBBBB
BNNNBBNBB
NNNNBNBNNBNNNBBN
NBNBN
NNNNNN
BNBNBNBBBBNNNNBBBBNNBBNBNBBNBBBBBBBB
NNNNBN
NBBBBBBBB
NNNNNN

输出样例 #2

12
BBBBBBBBBBBBNNNNNNNNNNNN

输入样例 #3

8
NNN
NNN
BBNNBBBN
NNNBNN
B
NNN
NNNNBNN
NNNNNNNNNNNNNNNBNNNNNNNBNB

输出样例 #3

12
BBBBNNNNNNNNNNNN

输入样例 #4

3
BNNNBNNNNBNBBNNNBBNNNNBBBBNNBBBBBBNBBBBBNBBBNNBBBNBNBBBN
BBBNBBBBNNNNNBBNBBBNNNBB
BBBBBBBBBBBBBBNBBBBBNBBBBBNBBBBNB

输出样例 #4

12
BBBBBBBBBBBBBBBBBBBBBBBBBBNNNNNNNNNNNN

说明

In the first example $ \text{dist(B,BN)}=\text{dist(N,BN)}=1 $ , $ \text{dist(BN,BN)}=0 $ . So the maximum distance is $ 1 $ .

Input

题意翻译

定义“BN-字符串”为仅含有 `B` 和 `N` 两种字符的字符串。 你可以对一个 BN-字符串 $s$ 做以下这些操作: - 删除 $s$ 的任意位置的字符。 - 删除 $s$ 中的一个 `BN` 子串或者 `NB` 子串。 - 在 $s$ 的末尾添加一个 `B` 或者 `N`。 - 在 $s$ 的末尾添加字符串 `BN` 或 `NB`。 我们认为两个 BN-字符串 $s,t$ 是“相似的”,当且仅当: - $s$ 的长度等于 $t$ 的长度(记这个长度为 $l$); - 存在 $1,2,\cdots,l$ 的一个排列 $p$ 使得 $s_{p_i}=t_i$ 恒成立。 定义两个 BN-字符串 $s,t$ 的距离 $\text{dist}(s,t)$ 为最小的操作次数使得 $s$ 与 $t$ 相似,其中每一次操作可以在 $s$ 或 $t$ 上进行。 给定 $n$ 个 BN-字符串 $s_1,s_2,\cdots,s_n$,求一个 BN-字符串 $t$ 使得 $\max\limits_{1\le i\le n}\{\text{dist}(s_i,t)\}$ 最小,输出这个最小值和任意一个满足条件的字符串 $t$。 $1\le n \le 3\times10^5,|s_i|\ge 1,\sum|s_i|\le5\times10^5$

加入题单

算法标签: