AT_abc418_g.[ABC418G] Binary Operation
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
共有 16 个整数元组 (A,B,C,D) 满足 A,B,C,D∈{0,1}。对于每一个元组,解决如下问题。
给定一个只由
0和1组成的非空字符串 S,当且仅当满足以下条件时,称 S 为美丽字符串:
- (条件)你可以反复执行以下操作,直到 S 的长度变为 1,并且最终剩下的唯一字符为
1。
- 任选一个整数 i,满足 1≤i≤∣S∣−1。
- 按如下方式定义整数 x:
- 如果 $S_i = $
0且 $S_{i+1} = $0,则 x=A。- 如果 $S_i = $
0且 $S_{i+1} = $1,则 x=B。- 如果 $S_i = $
1且 $S_{i+1} = $0,则 x=C。- 如果 $S_i = $
1且 $S_{i+1} = $1,则 x=D。- 删除 Si 和 Si+1,并在它们的位置插入对应于 x 的数字。
例如,如果 $S = $10101且你选择 i=2,则操作后字符串为1001(若 B=0),或1101(若 B=1)。给定一个长度为 N 的只由
0和1组成的字符串 T。
- 令 L 为 T 的所有子串中最长的美丽字符串的长度(若 T 的所有子串都不是美丽字符串,则 L=−1)。
- 令 M 为 T 的所有子串中美丽字符串的个数。
求 L 和 M。即使两个子串内容相同,只要它们在 T 中的位置不同,也要分别计数。
什么是子串?一个字符串 S 的子串是通过从 S 的开头删除零个或多个字符、从结尾删除零个或多个字符得到的字符串。
例如,10 是 101 的子串,但 11 不是 101 的子串。
输入格式
输入按如下格式从标准输入读入:
N T
输出格式
输出 16 行。第 i 行应输出对应于满足 i−1=8A+4B+2C+D 的 (A,B,C,D) 的 L 和 M,用空格分隔。
输入输出样例
输入#1
3 110
输出#1
1 2 2 3 2 3 3 5 1 2 2 3 2 3 3 5 3 3 2 3 3 4 3 5 3 3 2 3 3 4 3 5
输入#2
4 0000
输出#2
-1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 4 4 4 4 4 6 4 6 4 6 4 6 4 6 4 6
输入#3
30 011011100101110111100010011010
输出#3
1 17 4 31 29 263 29 280 29 232 29 247 30 240 30 447 30 418 29 225 30 435 30 435 30 435 30 435 30 439 30 452
说明/提示
样例解释 1
以 (A,B,C,D)=(0,0,0,1) 为例。
取 T 的第 1 到第 2 个字符得到字符串 11,它是美丽字符串,因为选择 i=1 并执行操作后,字符串变为 1。
在 (A,B,C,D)=(0,0,0,1) 的情况下,T 的美丽子串如下三种:
- 取 T 的第 1 个字符得到的字符串
1。 - 取 T 的第 2 个字符得到的字符串
1。 - 取 T 的第 1 到第 2 个字符得到的字符串
11。
数据范围
- 1≤N≤2×105
- N 为整数。
- T 是长度为 N 的只包含
0和1的字符串。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?