Kotlin Heroes: Episode 4 |
---|
Закончено |
Берляндский государственный университет (БГУ) проводит сборы по программированию. Сборы продлятся $$$n$$$ дней, и в эти дни лекторы БГУ планируют прочитать несколько лекций.
Некоторые дни сборов уже запланированы как экскурсионные дни, и в эти дни не следует проводить лекции. Чтобы участники не слишком устали от обучения программированию, количество лекций для каждого дня не должно превышать $$$k_1$$$, а количество лекций для каждой пары последовательных дней не должно превышать $$$k_2$$$.
Можете ли вы посчитать максимальное количество лекций, которое можно провести? Формально, необходимо определить максимальное целое число $$$m$$$, для которого можно выбрать $$$n$$$ неотрицательных целых чисел $$$c_1$$$, $$$c_2$$$, ..., $$$c_n$$$ (где $$$c_i$$$ — количество лекций, проведенных в течение дня $$$i$$$), чтобы:
Обратите внимание, что можно не проводить лекции в дни, в которые нет экскурсий (т. е., $$$c_i = 0$$$ возможно даже в том случае, если $$$i$$$ не является экскурсионным днем).
Первая строка содержит одно целое число $$$t$$$ ($$$1 \le t \le 50$$$) — количество наборов входных данных.
Затем следуют наборы входных данных, каждый из которых состоит из двух строк. Первая строка содержит три целых числа $$$n$$$, $$$k_1$$$, $$$k_2$$$ ($$$1 \le n \le 5000$$$; $$$1 \le k_1 \le k_2 \le 200\,000$$$).
Вторая строка содержит одну строку $$$s$$$, состоящую из ровно $$$n$$$ символов, каждый из которых является 0 или 1. Если $$$s_i = 0$$$, то день $$$i$$$ является днем экскурсий (поэтому в этот день не должно быть лекций); если $$$s_i = 1$$$, то день $$$i$$$ не является экскурсионным днем.
Для каждого набора входных данных выведите одно целое число — максимально возможное значение $$$m$$$ (максимальное количество лекций, которое можно провести).
4 4 5 7 1011 4 4 10 0101 5 3 4 11011 6 4 6 011101
12 8 8 14
Название |
---|