Автор | Сообщение |
|
Отправлено: 05.12.20 15:44. Заголовок: Задача № 2836
Всем здравствуйте! Помогите разобраться с задачкой, не получается никак... Готовый код не прошу (хотя, если выложите, будет здорово), наведите хотя бы на мысль, как реализовать решение. Пишу на питоне.
|
|
|
Ответов - 4
[только новые]
|
|
|
| Администратор
|
Сообщение: 2196
|
|
Отправлено: 05.12.20 17:28. Заголовок: shervlad пишет: наве..
shervlad пишет: цитата: | наведите хотя бы на мысль, как реализовать решение. |
|
1) Подумать, по какому критерию нужно отсортировать. Тут нужно сортировать два массива одновременно. В Python можно составить массив из кортежей (пар) и при вызове метода sort применить лямбда-функцию. Или ручками. 2) Взять первые K элементов отсортированного массива. 3) Для отобранных элементов найти и вывести сумму весов. 4) В отобранных элементах найти груз максимального веса и вывести его стоимость.
|
|
|
|
Отправлено: 07.12.20 09:38. Заголовок: Задача легко решаетс..
Задача легко решается в EXCEL. Не правильнее ли будет "самый большой" отправленный пакет назвать, например, самым тяжелым? Или это ловушка и дети поймут правильно?
|
|
|
|
Отправлено: 07.12.20 18:40. Заголовок: Насчёт EXCEL - согла..
Насчёт EXCEL - согласен, задача там решилась достаточно быстро, просто хотелось попробовать решить ее с помощью программы :) У меня код получился такой: f = open("26-k6.txt") n,k = map(int,f.readline().split()) a = [] for i in range(n): ----a.append(list(map(int,f.readline().split()))) ----a.append(a[1]/a[0]) a.sort(key = lambda x: (x[2],-x[1])) s,m = 0,0 for i in range(k): ----s+=a[0] ----if a[0] > m: --------m = a[1] print(s,m) Извиняюсь за отступы дефисами, не понял, как сделать отступы, чтобы они отображались.. Подскажите, можно ли как-то еще решение реализовать? Может, есть способ сделать проще?
|
|
|
|
Отправлено: 07.12.20 19:05. Заголовок: Для отступов можно в..
Для отступов можно в редакторе выбрать моноширинный шрифт (седьмая иконка с конца)
|
|
|
|