首页 > 试题广场 >

小红的子串权值和

[编程题]小红的子串权值和
  • 热度指数:340 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红定义一个字符串的权值为:极长“连续段”的数量。所谓极长“连续段”,指尽可能长的一段字符全部相同的连续子串。例如,"1100111" 共有 3 个连续段:"11"、"00" 和 "111",所以权值为 3。
现在小红拿到了一个 01 串,小红希望你帮她求出所有子串的权值之和。
提示:总共有C_{n+1}^2个子串。

输入描述:
第一行输入一个正整数 n ,代表字符串的长度。
第二行输入一个长度为 n ,且仅由 '0' 和 '1' 两种字符组成的字符串。
1\leq n\leq 200000


输出描述:
一个正整数,代表所有子串的权值之和。
示例1

输入

4
1101

输出

17

说明

4个长度为1的子串的权值均为1。
长度为2的子串中,"11"的权值为1,"10"和"01"的权值均为2。
长度为3的子串中,"110"的权值为2,"101"的权值为3。
长度为4的子串"1101"的权值为3。
总权值为1*4+1+2+2+2+3+3=17。
头像 小兵a
发表于 2025-09-05 16:02:00
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = 展开全文
头像 G了的花生米很威猛
发表于 2025-08-15 09:15:25
import sys n = int(sys.stdin.readline()) s = sys.stdin.readline() # 1101、 11011 # 1 (11, 1) (110 10 0) (1101 101 01 1) (11011, 1011, 011, 11, 1) # 1 展开全文
头像 有胆量的柯基在学习
发表于 2025-08-20 13:37:01
#include <bits/stdc++.h> using namespace std; int main() { int n; string s; cin >> n >> s; long long ans = 1LL * n 展开全文
头像 丨阿伟丨
发表于 2025-09-11 15:35:13
题目链接 小红的子串权值和 题目描述 给定一个长度为 的 01 字符串。一个字符串的“权值”被定义为其中极长连续相同字符段的数量。例如,字符串 "1100111" 的权值为 3,因为它由 "11"、"00" 和 "111&quo 展开全文