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

A. Пир на полярной станции Ограничение времени 2 секунды
Ограничение памяти 256.0 Мб
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
После успешного окончания кулинарных курсов Кеша, который всегда мечтал работать в арктике, устроился на работу на изолированную полярную станцию. Когда он прибыл на станцию вместе с запасом свежих продуктов ее персонал сильно образовался и решил устроить небольшой праздник.
На этот праздник Кеша решил приготовить N видов свежевыжатых соков. Для приготовления соков требуется K различных овощей и фруктов, причём в состав одного сока может входить от 1 до K компонентов. Объём чаши соковыжималки, которой будет пользоваться Кеша, а также количество исходных материалов достаточны для того, чтобы приготовить весь объём требуемого сока за один раз.
По технологии, чашу соковыжималки надо помыть после приготовления каждого сока. Но Кеше не нравится эта операция, так как она расходует слишком много теплой воды и занимает много времени...Он заметил, что если в состав следующего сока входят все компоненты, требуемые для изготовления предыдущего, то чашу можно и не мыть. Так,после приготовления яблочного сока можно обойтись без мытья чаши перед приготовлением яблочно-ананасового сока.
Иннокентию и рассчитайте минимальное количество операций мытья чаши, которые потребуются для приготовления всех соков. Естественно, после выполнения работы чаша должна быть чистой!

Формат ввода
В первой строке записываются целые величины N и K (1 ⩽ N, K ⩽ 300). Далее следуют N строк, каждая из которых описывает рецепт изготовления одного сока. Первое число этой строки m (1 ⩽ m ⩽ K) — количество компонентов сока. Далее следуют m различных целых чисел, каждое из которых находится в интервале от 1 до K включительно — номера компонентов, которые входят в состав соответствующего сока. Гарантируется, что набор компонентов различен для различных соков.

Формат вывода
Выведите единственное число — минимальное количество операций по мытью чаши.
Примеры
Ввод Вывод: 2
3 2
1 1
1 2
2 1 2
Ввод Вывод 4
4 4
1 1
1 2
1 3
1 4
Решать на любом языке программирования

Показать ответ
Ответ:
mares2007
mares2007
13.01.2023 12:09

ответ:  Python  

nk = input().split()

N = int(nk[0])

K = int(nk[1])

count = 0

prev = set('a')

for x in range(N):    

   s = input().split()

   set_s = set(s[1:])

   if set_s.issuperset(prev) == False:  

       count += 1

   prev = set_s

print(count)

Объяснение:

Решал, подразумевая, что одно и то же K не может повторяться несколько раз на одной строке.

Псевдокод алгоритма:

1.  Получаем N

2. Получаем K

3. Создаем переменную count для подсчета операций

4. Создаем множество prev для сохранения каждого предыдущего множества

5. Прогоняем цикл N раз:

  6. Получаем список s от пользователя

  7. Получаем множество set_s из списка s

  8. Проверяем, если предыдущее множество prev не является подмножеством set_s:

     9. То к count прибавляем 1

  10. Присваиваем prev значение set_s

0,0(0 оценок)
Ответ:
ника2552
ника2552
15.01.2024 15:52
Здравствуйте! Давайте разберемся с задачей.

Перед нами задача на минимизацию количества операций мытья чаши соковыжималки при приготовлении нескольких видов соков. Для решения данной задачи мы можем использовать следующий алгоритм:

1. Считываем значения N и K - количество видов соков и количество различных овощей и фруктов соответственно.
2. Создаем пустой список "рецептов" для хранения рецептов приготовления соков.
3. Считываем N строк с описанием рецептов:
3.1. Считываем значение m - количество компонентов сока.
3.2. Считываем m различных целых чисел от 1 до K - номера компонентов, входящих в состав сока.
3.3. Добавляем полученный рецепт в список "рецептов".
4. Создаем переменную "количество_мытья" и присваиваем ей значение 1 - так как мы должны помыть чашу до приготовления первого сока.
5. Запускаем цикл по списку "рецептов" начиная со второго элемента (индекс 1):
5.1. Проверяем, содержит ли предыдущий рецепт все необходимые компоненты для текущего рецепта. Если содержит, то мы можем обойтись без мытья чаши.
5.2. Если предыдущий рецепт не содержит все компоненты текущего рецепта, то увеличиваем значение "количество_мытья" на 1 и переходим к следующему рецепту.
6. Выводим значение "количество_мытья" - минимальное количество операций по мытью чаши.

Пример решения на языке Python:

```python
# Шаг 1
N, K = map(int, input().split())

# Шаг 2
recipes = []

# Шаг 3
for _ in range(N):
m, *components = map(int, input().split())
recipes.append(components)

# Шаг 4
num_washes = 1

# Шаг 5
for i in range(1, N):
# Шаг 5.1
if set(recipes[i-1]).issuperset(recipes[i]):
continue
# Шаг 5.2
num_washes += 1

# Шаг 6
print(num_washes)
```

Надеюсь, данное объяснение и пример кода помогут вам понять и решить данную задачу. Если у вас возникнут дополнительные вопросы, пожалуйста, обращайтесь. Удачи!
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота