AT_abc418_d.[ABC418D] XNOR Operation

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

本题是 Problem G 的子问题。

一个由 0 和 1 组成的非空字符串 SS,当且仅当满足以下条件时,被称为美丽字符串:

  • (条件)你可以重复执行以下操作,直到 SS 的长度变为 11,并且最终 SS 中唯一剩下的字符为 1。
    1. 选择任意整数 ii,满足 1≤i≤∣S∣−11 \leq i \leq |S| - 1。
    2. 按如下方式定义整数 xx:
      • 如果 Si=0S_i = 0 且 Si+1=0S_{i+1} = 0,则 x=1x = 1。
      • 如果 Si=0S_i = 0 且 Si+1=1S_{i+1} = 1,则 x=0x = 0。
      • 如果 Si=1S_i = 1 且 Si+1=0S_{i+1} = 0,则 x=0x = 0。
      • 如果 Si=1S_i = 1 且 Si+1=1S_{i+1} = 1,则 x=1x = 1。
    3. 移除 SiS_i 和 Si+1S_{i+1},并在它们的位置插入对应的数字 xx。
      例如,如果 S=10101S = 10101,选择 i=2i = 2,操作后字符串变为 1001。

给定一个长度为 NN 的只包含 0 和 1 的字符串 TT。
请你求出 TT 的子串中有多少个是美丽字符串。即使两个子串内容相同,只要它们取自不同的位置,也要分别计数。

什么是子串?一个字符串 SS 的子串是通过从 SS 的开头删除零个或多个字符,并从结尾删除零个或多个字符得到的字符串。
例如,10 是 101 的子串,但 11 不是 101 的子串。

输入格式

输入按如下格式从标准输入给出:

NN TT

输出格式

输出 TT 的子串中美丽字符串的个数。

输入输出样例

  • 输入#1

    3
    110

    输出#1

    3
  • 输入#2

    4
    0000

    输出#2

    4
  • 输入#3

    30
    011011100101110111100010011010

    输出#3

    225

说明/提示

样例解释 1

通过取 TT 的第 1 到第 2 个字符得到的字符串 11 是美丽字符串,因为选择 i=1i = 1 并执行操作后,字符串变为 1。TT 的子串中美丽字符串有以下三个:

  • 取 TT 的第 1 个字符得到的字符串 1。
  • 取 TT 的第 2 个字符得到的字符串 1。
  • 取 TT 的第 1 到第 2 个字符得到的字符串 11。

数据范围

  • 1≤N≤2×1051 \leq N \leq 2 \times 10^5
  • NN 是整数。
  • TT 是长度为 NN 的、仅由 0 和 1 组成的字符串。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页