Автор | Сообщение |
|
Отправлено: 20.02.21 17:14. Заголовок: Неверный ответ в задачке 2836
Есть единственная тема по ней: http://egekp.unoforum.pro/?1-15-0-00000085-000-0-0-1607357126 но она не подходит. Мой ответ: 5931 882 Их ответ: 5931 800 Самое забавное, что они смогли просчитать верно 5931, но при этом забыли про последние 32 груза, что там самый тяжёлый весит 882. Вот моё кодище: def Loader4(Name): with open(GPath + Name) as file: N, K = map(int, file.readline().split(" ")) Arr = [tuple(map(int, file.readline().split(" "))) for i in range(N)] Arr.sort() #Некоторые бы догадались, что это не первая задача из 26 номеров, так что данная сортировка только в этой подзадаче не имеет смысла return K, Arr def Z2836(): K, Arr = Loader4("26-k6.txt") Dict = {} for i, j in Arr: ji = j / i try: try: Dict[ji][ i].append(j) except KeyError: Dict[ji][ i] = [j] except KeyError: Dict[ji] = {i: [j]} Keys = sorted(Dict.keys()) Mass = Max = 0 for Key in Keys: Pack = Dict[Key] print(Key, K) Keys2 = sorted(Pack.keys())[::-1] for i in Keys2: j = Pack[ i] print(" ", i, j) for k in j: Mass += i Max = max(Max, k) K -= 1 if K == 0: print(Mass, Max) return Z2836() Сам прогу пилил ;'-} Вывод в консоли, свои комменты написал после решётки '#' #Первые 68 грузов: 8.0 100 100 [800] #Вот откуда они взяли ответ -_- но это же не верно!!! 94 [752, 752] 93 [744, 744] 92 [736] 91 [728] 89 [712] 88 [704] 86 [688, 688] 81 [648] 78 [624] ... 15 [120, 120] 12 [96] 11 [88, 88] #Остальные 32 груза: 9.0 32 98 [882, 882] #Вот откуда взял я ответ! Их же пример берёт максимальную массу НЕ из самых дешёвых грузов! Так и тут!!! 95 [855] 93 [837] 88 [792] 87 [783] 86 [774] 84 [756] 83 [747] 82 [738] 81 [729] ... 53 [477] 52 [468] 49 [441] 5931 882
|
|
|
Ответов - 5
[только новые]
|
|
|
| Администратор
|
Сообщение: 2476
|
|
Отправлено: 20.02.21 18:28. Заголовок: Обратите внимание на..
Обратите внимание на то, что нужно записать в ответе: "Запишите в ответе два числа – сначала суммарный вес угля в отправленных пакетах, затем стоимость самого тяжёлого отправленного пакета."
|
|
|
|
Отправлено: 21.02.21 12:21. Заголовок: Разве 882 не тяжелее..
Разве 882 не тяжелее 800? В том то и дело, что суммарный вес я правильно высчитал, тогда почему автор задачки не в состоянии был посмотреть на то, что там есть пакеты стоимостью 882, 882, 855 и 837? Какое условие блокирует высчет в этом месте, если в примере задачки самый тяжёлый был не из самых дешёвых?
|
|
|
|
| Администратор
|
Сообщение: 2483
|
|
Отправлено: 21.02.21 12:25. Заголовок: VectorASD пишет: Раз..
VectorASD пишет: цитата: | Разве 882 не тяжелее 800? |
|
Это стоимость. А их массы - 98 и 100 соответственно.
|
|
|
|
Отправлено: 21.02.21 12:35. Заголовок: А всё, пардон. Приме..
|
|
|
|
Отправлено: 21.02.21 12:40. Заголовок: Вот теперь всё хорош..
Вот теперь всё хорошо :S GPath = "" #__file__.rsplit("/", 1)[0] + "/" #В случае QPython3 (андроидский релиз питона) приходится высчитывать путь до директории скрипта -_- def Loader4(Name): with open(GPath + Name) as file: N, K = map(int, file.readline().split(" ")) Arr = [tuple(map(int, file.readline().split(" "))) for i in range(N)] Arr.sort() return K, Arr def Z2836(): K, Arr = Loader4("26-k6.txt") Dict = {} for i, j in Arr: ji = j / i try: try: Dict[ji][ i].append(j) except KeyError: Dict[ji][ i] = [j] except KeyError: Dict[ji] = {i: [j]} Keys = sorted(Dict.keys()) Mass = Max = MaxS = 0 for Key in Keys: Pack = Dict[Key] print(Key, K) Keys2 = sorted(Pack.keys())[::-1] for i in Keys2: j = Pack[ i] print(" ", i, j) if i > Max: Max, MaxS = i, j[0] for k in j: Mass += i K -= 1 if K == 0: print(Mass, MaxS) return Z2836() Как закрыть тему?) Типо чтоб в неё нельзя было писать
|
|
|
|