#题面
#题目描述
Mark Douglas 是一名调查员。他接受了「调查古代龙人」的任务。经过千辛万苦,Mark 终于找到了一位古代龙人。Mark 找到他时,他正在摆弄一些秘药,其中一些药丸由于是从很久以前流传下来的,发出了独特的光泽。古代龙人告诉了 Mark 一些他想知道的事情,看了看手中的秘药,决定考一考这位来访者。
古代龙人手中共有 粒秘药,我们可以用 表示「古老的秘药」,其余的用 表示。他将它们排成一列。古代龙人认为平衡是美的,于是他问 Mark 能选出 多少个「平衡的区间」。「平衡的区间」是指首先选出一个区间 ,在它内部选出一个中间点 ,满足 , 是「古老的秘药」,且区间 和 中「古老的秘药」个数相等。
#输入格式
第一行为一个正整数 表示该测试点所属的子任务编号,子任务的详细信息请见「数据范围」。样例的子任务编号为 。
第二行为一个正整数 。
第三行为一个长度为 的字符串,仅包含 和 。
#输出格式
输出一行,表示答案。
#样例输入输出
样例输入 #1
0
7
1101011
样例输出 #1
7
样例输入 #2
见 GitSB 仓库中本题目录下的 data/ex_puzzle2.in
。
样例输出 #2
见 GitSB 仓库中本题目录下的 data/ex_puzzle2.out
。
样例输入 #3
见 GitSB 仓库中本题目录下的 data/ex_puzzle3.in
。
样例输出 #3
见 GitSB 仓库中本题目录下的 data/ex_puzzle3.out
。
#数据范围与约定
本题采用捆绑测试,只有通过一个子任务中的全部测试点才能拿到这个子任务的分数。
对于所有测试点,。各子任务分值及特殊约束如下:
子任务编号 | 分值 | 约束 |
---|---|---|
,字符串中仅有 个 | ||
字符串中的所有字符全为 | ||
无 |
#思路
预处理出每个以 为分隔的段的长度,然后按照前缀和的奇偶性分别处理,由于每段之中只包含一个数字 ,所以第 段的前缀和即为 。最后再单独处理相邻的段即可。
#代码
1 |
|