CF1346B.Boot Camp

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

伯兰国立大学(BSU)正在举办一场编程训练营。训练营将持续 nn 天,BSU 的讲师们计划在这些天内安排若干场讲座。

训练营中的某些天已经被安排为游览日,这些天不能安排讲座。为了防止参与者因学习编程而过度疲劳,每天的讲座数量不得超过 k1k_1,并且任意连续两天的讲座总数不得超过 k2k_2。

你能计算出在训练营期间最多可以安排多少场讲座吗?形式化地说,找到最大的整数 mm,使得可以选择 nn 个非负整数 c1,c2,…,cnc_1, c_2, \dots, c_n(其中 cic_i 表示第 ii 天安排的讲座数量),满足以下条件:

  • c1+c2+⋯+cn=mc_1 + c_2 + \dots + c_n = m;
  • 对于每个游览日 dd,有 cd=0c_d = 0;
  • 对于每一天 ii,有 ci≤k1c_i \leq k_1;
  • 对于每一对连续的天数 (i,i+1)(i, i+1),有 ci+ci+1≤k2c_i + c_{i+1} \leq k_2。

注意,某些非游览日也可以不安排讲座(即即使 ii 不是游览日,也可能有 ci=0c_i = 0)。

输入格式

第一行包含一个整数 tt(1≤t≤501 \leq t \leq 50),表示测试用例的数量。

接下来是 tt 组测试数据,每组测试数据包含两行。第一行包含三个整数 nn、k1k_1、k2k_2(1≤n≤50001 \leq n \leq 5000;1≤k1≤k2≤200 0001 \leq k_1 \leq k_2 \leq 200\,000)。

第二行包含一个长度为 nn 的字符串 ss,仅由字符 00 或 11 组成。如果 si=0s_i = 0,则第 ii 天为游览日(这一天不能安排讲座);如果 si=1s_i = 1,则第 ii 天不是游览日。

输出格式

对于每组测试数据,输出一个整数,表示最多可以安排的讲座总数 mm。

输入输出样例

  • 输入#1

    4
    4 5 7
    1011
    4 4 10
    0101
    5 3 4
    11011
    6 4 6
    011101

    输出#1

    12
    8
    8
    14

说明/提示

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页