luogu#P7047. 「MCOI-03」数据
「MCOI-03」数据
题目背景
Rin 正在给 MCOI Round 998244353 的题目出数据。
但是她太菜了,把数据生成器写出锅了,于是数据只生成了一半然后生成器就 RE 了。
现在她想请你用这一半的数据恢复出完整的数据。
题目描述
以下是一些常见的定义,如果你很熟悉它们你也可以不看。
01 串是指仅包含 0
和 1
两种字符的字符串,仅包含其中一种也是可以的。
一个字符串取出其连续的一段称为子串。容易发现一个长度为 的字符串有 个长度为 的子串。
一组实数 的平均值 ,即所有元素的和除以元素的个数。
在此基础上, 的方差 ,即所有元素与平均值的差的平方和除以元素的个数。
一个长度为 的 01 串 的二进制值等于 ,其中 是 从左向右第 个字符上的数字。
在本题中,给出如下定义:
一组数据是一个长度为 的 01 串。
一组数据的毒瘤度定义为,其所有长度为 的子串的二进制值的方差。
现在,给定一组数据的前 个字符。你需要找到使得这组数据的毒瘤度 最小 的后 个字符。如果有多解,请按照这后 个字符构成的子串的二进制值从小到大排序输出。
输入格式
输入数据共一行,包含一个长度为 的 01 串,表示一组数据的前 个字符。
输出格式
输出若干行,每一行一个长度为 的 01 串,表示一组毒瘤度最小的数据的后 个字符,按照其二进制值从小到大排序输出。
10
10
提示
样例一解释
在本例中 ,存在四组满足要求的数据分别是 1000
,1001
,1010
,1011
。
1010
有三个长度为 的子串,分别为 10
,01
,10
。它们的二进制值分别为 。 的平均值为 ,方差为 。故 1010
的毒瘤度为 。
可以计算出这四组数据的毒瘤度分别为 。其中 1010
是唯一毒瘤度最小的,故程序输出其后 个字符 10
。
数据范围与提示
保证所有数据随机生成。对于 01 串的每一位,其为 1
的概率都是 且不同位相互独立。
本题不采用捆绑测试,按点给分。测试点 计 分,其他测试点每个计 分。
每个测试点 的规模如下表:
测试点编号 | ||||
---|---|---|---|---|
测试点编号 | ||||
提示:在 C++ 中您可以使用 位整数__int128
。