切割 01 串 2.0
题号:NC274765
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

jackle 在校赛的时候出过一道 "切割 01 串" 的题目,如今他又出了一道切割 01 串的题目:
给定一个长度为 n01 串,定义如下操作为一次 "切割":
  • 长度大于 $1$ 的字符串分割为两个非空的连续字串,记分割出来的左侧字串 a0 的出现次数为 C_0,右侧字串 b1 出现的次数为 C_1,需要满足 L\leq |C_0-C_1|\leq R
你每次切割完,都会得到两个新 01 串,你可以继续选择这些已经被你切出来的 01 串做切割,只要满足切割条件。
jackle 想问你最多可以切割多少次?

输入描述:

第一行输入 3 个整数,n\ (1\leq n \leq 500)L,R\ (0\leq L \leq R \leq 500),分别表示字符串长度,和题目中的两个参数。
第二行输入 1 个长度为 n01 串。

输出描述:

输出最多能切割多少次?
示例1

输入

复制
6 2 3
011011

输出

复制
3

说明

其中一种切割次数最多的切法如下:
第一次切割可以切:0\ |\ 11011,然后选择 11011 这个串继续做切割。
第二次切割可以切:1\ |\ 1011,然后选择 1011 这个串继续做切割。
第三次切割可以切:1\ |\ 011