CF1383E Strange Operation
题目描述
考拉 Koa 有一个长度为 $n$ 的二进制字符串 $s$。Koa 最多可以进行 $n-1$ 次(也可以不进行)如下操作:
每次操作,Koa 选择某个 $i$,满足 $1 \le i < |s|$,将 $s_i$ 变为 $max(s_i, s_{i+1})$,然后删除 $s$ 的第 $i+1$ 个字符(删除后剩余部分拼接起来)。
注意,每次操作后,$s$ 的长度减少 $1$。
Koa 最多可以进行 $n-1$ 次操作(也可以不操作),问 Koa 最多能得到多少种不同的二进制字符串?请将答案对 $10^9+7$ 取模后输出。
输入格式
输入仅一行,包含一个二进制字符串 $s$($1 \le |s| \le 10^6$)。对于所有 $i$($1 \le i \le |s|$),$s_i = 0$ 或 $s_i = 1$。
输出格式
输出一个整数,表示不同二进制字符串的数量,对 $10^9+7$ 取模。
说明/提示
在第一个样例中,Koa 可以得到的二进制字符串有:$0$、$00$ 和 $000$。
在第二个样例中,Koa 可以得到的二进制字符串有:$1$、$01$、$11$、$011$、$101$ 和 $0101$。例如:
- 要从 $0101$ 得到 $01$,Koa 可以这样操作:$0101 \rightarrow 0(10)1 \rightarrow 011 \rightarrow 0(11) \rightarrow 01$。
- 要从 $0101$ 得到 $11$,Koa 可以这样操作:$0101 \rightarrow (01)01 \rightarrow 101 \rightarrow 1(01) \rightarrow 11$。
括号表示 Koa 每次操作选择的两个位置。
由 ChatGPT 4.1 翻译