#P12505. 「ROI 2025 Day2」充实的假期

    ID: 14031 远端评测题 1000ms 1024MiB 尝试: 0 已通过: 0 难度: 4 上传者: 标签>贪心2025分类讨论ROI(俄罗斯)

「ROI 2025 Day2」充实的假期

题目描述

译自 ROI 2025 Day2 T1. Качественный отдых

小明正在一家 IT 公司进行为期 nn 天的实习,担任技术支持的角色。他的实习日程安排颇为复杂,工作日和休息日交织在一起。除了固定的休息日,小明还有一些调休日——他可以选择在任意工作日额外休息一天。

不过,小明觉得单独一天的休息远远不够,只有连续两天或以上的休息日才能让他真正放松,称之为充实休假日。

你会收到 qq 个关于调休日数量的询问,每个询问对应一个不同的调休天数。你的任务是根据小明的实习日程,计算出在每种调休天数下,小明最多能获得多少个充实休假日。

输入格式

第一行包含两个整数 nnqq (1n100000,1qn+1)(1 \le n \le 100\,000, 1 \le q \le n+1),分别表示实习天数和询问数量。

第二行包含一个长度为 nn 的字符串 ss,由字符 01 组成,表示实习日程。其中,0 表示工作日,1 表示休息日。

接下来的 qq 行,每行包含一个整数 kik_i (0kin)(0 \leq k_i \leq n),表示第 ii 个询问中可用的调休天数。保证每个 kik_i 不超过日程中的工作日总数。

输出格式

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

3 4
000
0
1
2
3

0
0
2
3

4 3
1010
0
1
2

0
3
4

11 6
11010101001
5
2
0
1
4
3

11
7
2
5
10
9

提示

样例解释 1

在第一个样例中,实习的 33 天全是工作日。如果调休少于 22 天,无法获得充实休假日。对于 k3=2k_3 = 2k4=3k_4 = 3,可以选择前 kjk_j 天作为调休日,这些天都将成为充实休假日。

样例解释 2

在第二个样例中,最优策略是将调休日安排在第二天,这样前三天都将成为充实休假日。


详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 分值 附加限制
00 样例
11 66 所有日程均为工作日
22 1111 工作日与休息日交替,首日为休息日
33 1212 q=1q = 1k1=0k_1 = 0
44 1919 q=1q = 1k1=1k_1 = 1
55 1111 n15n \le 15
66 1717 n1000n \le 1000
77 1313 日程中无连续休息日
88 1111 无附加限制