
ДАМ 100 БАЛЛОВ Задача 7: Ремонт забораЗабор состоит из N одинаковых вертикальных досок. Некоторые
из досок сгнили и нуждаются в замене, для каждой доски известно, нужно ли её заменить. Для ремонта забора можно использовать продающиеся в магазине щиты, которые бывают L разных видов: шириной в 1 доску, в 2 доски, ..., в L досок. Щит нельзя разрезать на части, то есть одним щитом можно заменить не более любых L подряд идущих досок. При этом можно менять не только сгнившие доски, но и хорошие.Оказалось, что все щиты стоят одинаково, независимо от размера щита. Определите, какое наименьшее число щитов необходимо приобрести, чтобы починить весь забор.Входные данныеПервая строка входных данных содержит целое число L (L > 0) – максимальный размер щита. Во второй строке входных данных записано целое число N (N > 0) – количество досок в заборе. Следующие N строк содержат по одному числу, равному 0 или 1. Число 1 обозначает, что соответствующая доска в заборе нуждается в замене, число 0 – что доска может быть сохранена.Выходные данныеПрограмма должна вывести одно целое число – минимальное число щитов, которое необходимо приобрести для ремонта всего забора.Система оцениванияРешение, правильно работающее только для случаев, когда числа L и N не превосходят 1000, будет оцениваться в 6 баллов.В 10 баллов будет оцениваться решение, правильно работающее, когда числа L и N не превосходят 105.ПримерВвод Вывод Пояснение38001010102Максимальная ширина одного щита равна 3. Забор состоит из 8 досок, нужно заменить доски с номерами 3, 5 и 7. Для этого достаточно двух щитов, например, одним щитом меняем доски с номерами 3, 4, 5, а другим щитом меняем доску с номером 7.

Ответы на вопрос

Ответ:
max = int(input())
Len = int(input())
zabor = []
rem = 0
tl = 0
for i in range(Len):
zabor.append(int(input()))
for i in zabor:
if i == 1 and tl == 0:
rem += 1
tl = max
if tl > 0:
tl -= 1
print(rem)
Объяснение:
Соблюдай пробелы!!!!
5 звезд и Спасибо))



Ответ:
Решил на python3
MaxLenRep = int(input())
Len = int(input())
zabor = []
rem = 0
tl = 0
for i in range(Len):
zabor.append(int(input()))
for i in zabor:
if i == 1 and tl == 0:
rem += 1
tl = MaxLenRep
if tl > 0:
tl -= 1
print(rem)



Для решения этой задачи, вам следует использовать жадный алгоритм. Вам нужно последовательно пройтись по доскам забора и считать, сколько досок вам нужно покрыть одним щитом. Если вы достигли максимального размера щита L или встретили доску, которую нужно заменить, то вы ставите новый щит и счетчик обнуляется. В конце, если счетчик не равен нулю, вы также добавляете один щит.
Пример кода на Python:
pythonL = int(input()) # Максимальная ширина щита
N = int(input()) # Количество досок
boards = [int(input()) for _ in range(N)] # Список досок (0 - хорошие, 1 - требуют замены)
shields_needed = 0 # Количество щитов, которое нужно приобрести
current_shield_width = 0 # Текущая ширина щита
for board in boards:
if board == 1: # Если доска требует замены
current_shield_width = L # Ставим новый щит
else:
current_shield_width += 1 # Увеличиваем текущую ширину щита
if current_shield_width >= L: # Если текущая ширина достигла максимальной
shields_needed += 1
current_shield_width = 0 # Обнуляем текущую ширину
if current_shield_width > 0: # Если в конце осталась неиспользованная ширина щита
shields_needed += 1
print(shields_needed)
Вы можете вставить этот код в среду программирования Python и запустить его, передав значения L, N и последовательность досок в соответствии с вашим примером. Он должен вывести минимальное количество щитов, необходимых для ремонта забора.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili