logo AlgoBeat OnlineJudge
登录 注册

#10379. [IOI 2026 Practice Contest] Duplicated Binary Strings(暂无 SPJ)

内存限制:512 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: AlgoBeat 官方账号

题目描述

原题为交互题,但请在这里按照标准输入输出读写。子任务分数并未配置。

Oqila 在暑假研究重复二进制字符串。一个重复二进制字符串是一个非空字符串 ,满足:

  • 只包含字符 01(即 是二进制字符串)。
  • 可以写成 的形式,其中 是任意二进制字符串,连接操作表示将两个字符串首尾相接。

例如,0000011011 是重复二进制字符串,但 010110000 不是。

定义二进制字符串 强度 中出现的不同连续重复子串的数量。如果两个子串至少有一个字符不同,则认为它们不同。

本题包含两部分,每部分有若干子任务。您的程序需要根据输入判断执行哪一部分。

输入格式

输入的第一行包含一个整数 ,表示部分的编号:

  • ,表示第一部分:计算给定字符串的强度。
  • ,表示第二部分:构造长度为 的字符串,使其强度最小或最大。

第一部分输入(

第二行包含一个二进制字符串 ,长度为 )。

第二部分输入(

第二行包含一个字符串 ,取值为 weakeststrongest,分别表示需要构造最小强度或最大强度的字符串。

输出格式

第一部分输出(

输出一个整数 ,表示 中不同连续重复子串的数量。

第二部分输出(

输出一行,一个长度为 的二进制字符串,满足对应要求(最小或最大强度)。如果有多个合法答案,输出任意一个即可。

样例

样例 1(第一部分)

输入

1
0101

输出

1

解释:0101 中只有一个重复子串,即 0101),所以强度为 1。

样例 2(第一部分)

输入

1
0000

输出

2

解释:0000 中有两个重复子串:00)和 0000),注意 00 出现多次但只计一次。

样例 3(第二部分,请求最小强度)

输入

2
weakest

输出(示例)

0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

(这是一个长度 100 的字符串,但实际输出可能不同,只需满足强度和约束即可。)

样例 4(第二部分,请求最大强度)

输入

2
strongest

输出(示例)

1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

(同上,输出任意合法字符串即可。)


数据范围与提示

第一部分

第二部分

  • 需要输出的字符串长度为 ,且只包含字符 01

第一部分子任务

子任务 分数 额外限制
1 6
2 9 无额外限制

第二部分子任务

子任务 分数 目标
3 25 最小化强度
4 60 最大化强度

为您输出字符串的强度。

子任务 3 得分表(最小化):

条件 得分
0
20
25

子任务 4 得分表(最大化):

条件 得分
0
60