CF1428F Fruit Sequences
题目描述
动物管理员正在为他的宠物兔子购买一箱水果。这些水果是一串苹果和橙子的序列,用一个长度为 $n$ 的二进制字符串 $s_1s_2\ldots s_n$ 表示。$1$ 代表苹果,$0$ 代表橙子。
由于兔子对橙子过敏,动物管理员希望找到最长的连续苹果序列。设 $f(l,r)$ 表示子串 $s_l s_{l+1} \ldots s_r$ 中最长的连续苹果(即 $1$)的长度。
请你帮助动物管理员计算 $\sum_{l=1}^{n} \sum_{r=l}^{n} f(l,r)$,即所有子串的 $f$ 值之和。
输入格式
第一行包含一个整数 $n$,$1 \leq n \leq 5 \cdot 10^5$。
第二行包含一个长度为 $n$ 的二进制字符串 $s$,其中 $s_i \in \{0,1\}$。
输出格式
输出一个整数,表示 $\sum_{l=1}^{n} \sum_{r=l}^{n} f(l,r)$。
说明/提示
在第一个测试样例中,一共有十个子串。我们用 $[l,r]$ 表示子串 $s_l s_{l+1} \ldots s_r$:
- $[1,1]$:0
- $[1,2]$:01
- $[1,3]$:011
- $[1,4]$:0110
- $[2,2]$:1
- $[2,3]$:11
- $[2,4]$:110
- $[3,3]$:1
- $[3,4]$:10
- $[4,4]$:0
每个子串中最长连续 $1$ 的长度分别为 $0,1,2,2,1,2,2,1,1,0$。因此,答案为 $0+1+2+2+1+2+2+1+1+0=12$。
由 ChatGPT 4.1 翻译