#AT1332. D - Handstand

D - Handstand

D - Handstand

得分:400 积分

题目描述

有 $N$ 个人从左到右站成一行。

给定一个长度为 $N$ 的字符串 $S$,字符串由 0 和 1 组成,并给定一个正整数 $K$。

如果第 $i$ 个字符是 0,第 $i$ 个人站在双脚上;如果第 $i$ 个字符是 1,第 $i$ 个人站在双手上。

你最多可以给出 $K$ 次以下指令(可以为零):

指令:选择满足 $1 \leq l \leq r \leq N$ 的整数 $l$ 和 $r$,然后将第 $l$ 个、第 $l+1$ 个、$...$、第 $r$ 个人反转。也就是说,对于每个 $i = l, l+1, ..., r$,原来站在双脚上的第 $i$ 个人现在站在双手上,原来站在双手上的第 $i$ 个人现在站在双脚上。

在最多进行 $K$ 次指令后,找出可能站在双手上的连续人数的最大可能值。

约束

  • $N$ 是一个满足 $1 \leq N \leq 10^5$ 的整数。
  • $K$ 是一个满足 $1 \leq K \leq 10^5$ 的整数。
  • 字符串 $S$ 的长度是 $N$。
  • 字符串 $S$ 的每个字符是 0 或 1。

输入

输入以以下格式从标准输入给出:

NN KK

SS

输出

打印在最多进行 $K$ 次指令后可能站在双手上的连续人数的最大可能值。


5 1
00010
4

通过以下的指令我们可以使得连续站在双手上的人数最多,结果为 4:

  • 给出指令 $l = 1, r = 3$,即将从第一个到第三个人反转。

14 2
11101010110011
8

1 1
1
1

不需要进行任何指令。