P12505 「ROI 2025 Day2」充实的假期

题目描述

**译自 [ROI 2025](https://neerc.ifmo.ru/school/archive/2024-2025.html) Day2 T1.** ***[Качественный отдых](https://neerc.ifmo.ru/school/archive/2024-2025/ru-olymp-roi-2025-day2.pdf)*** 小明正在一家 IT 公司进行为期 $n$ 天的实习,担任技术支持的角色。他的实习日程安排颇为复杂,工作日和休息日交织在一起。除了固定的休息日,小明还有一些调休日——他可以选择在任意工作日额外休息一天。 不过,小明觉得单独一天的休息远远不够,只有连续两天或以上的休息日才能让他真正放松,称之为充实休假日。 你会收到 $q$ 个关于调休日数量的询问,每个询问对应一个不同的调休天数。你的任务是根据小明的实习日程,计算出在每种调休天数下,小明最多能获得多少个充实休假日。

输入格式

第一行包含两个整数 $n$ 和 $q$ $(1 \le n \le 100\,000, 1 \le q \le n+1)$,分别表示实习天数和询问数量。 第二行包含一个长度为 $n$ 的字符串 $s$,由字符 `0` 和 `1` 组成,表示实习日程。其中,`0` 表示工作日,`1` 表示休息日。 接下来的 $q$ 行,每行包含一个整数 $k_i$ $(0 \leq k_i \leq n)$,表示第 $i$ 个询问中可用的调休天数。保证每个 $k_i$ 不超过日程中的工作日总数。

输出格式

输出 $q$ 个整数,分别表示在每个 $k_i$ 调休天数下,小明通过选择 $k_i$ 个额外休息日,最多能获得的充实休假日数量。

说明/提示

### 样例解释 1 在第一个样例中,实习的 $3$ 天全是工作日。如果调休少于 $2$ 天,无法获得充实休假日。对于 $k_3 = 2$ 或 $k_4 = 3$,可以选择前 $k_j$ 天作为调休日,这些天都将成为充实休假日。 ### 样例解释 2 在第二个样例中,最优策略是将调休日安排在第二天,这样前三天都将成为充实休假日。 --- 详细子任务附加限制及分值如下表所示。其中子任务 $0$ 是样例。 | 子任务 | 分值 | 附加限制 | | :-: | :-: | :-: | |$0$|$0$|样例|| | $1$ | $6$ | 所有日程均为工作日 | | | $2$ | $11$ | 工作日与休息日交替,首日为休息日 | | | $3$ | $12$ | $q = 1$,$k_1 = 0$ | | | $4$ | $19$ | $q = 1$,$k_1 = 1$ | | | $5$ | $11$ | $n \le 15$ | $0$ | | $6$ | $17$ | $n \le 1000$ | $0,5$ | | $7$ | $13$ | 日程中无连续休息日 | $1,2$ | | $8$ | $11$ | 无附加限制 | $0,1-7$ |