Автор | Сообщение |
|
Отправлено: 16.06.21 22:27. Заголовок: Задача 40
Первоначально у нас получилось 9991 кг, последние грузы были массой 126, 128, 129, 131 кг. А почему нельзя поменять груз 129 кг на 138 кг? И тогда общая масса будет равна 10000 кг... Ответ: 113 10000 В чем у меня ошибка?
|
|
|
Ответов - 4
[только новые]
|
|
|
Отправлено: 16.06.21 22:35. Заголовок: f = open('26-39...
f = open('26-39.txt','r') a=[] n,m = map(int,f.readline().split()) sn=0; s =0 for i in f: if int(i)>=310 and int(i)<=320 : sn+=1 s+=int(i) else : a.append(int(i)) a = sorted(a) i=0 while s+a[ i]<=m : sn+=1 s+=a[ i] i+=1 i-=1; n=0; sm=s while True : k=i while s-a[i-n]+a[k]<=m : k+=1 if k==i : break if s-a[i-n]+a[k-1]>sm : sm = s-a[i-n]+a[k-1] if sm==m : break n+=1 print(sn,sm) f.close()
|
|
|
|
| Администратор
|
Сообщение: 2866
|
|
Отправлено: 16.06.21 22:40. Заголовок: Попробуйте сравнить ..
Попробуйте сравнить свое решение с авторским, которое есть на сайте (рядом с файлом с данными).
|
|
|
|
Отправлено: 17.06.21 07:17. Заголовок: Автор меняет "по..
Автор меняет "последний" груз 131кг на максимально возможный - 139кг, добавляя всего 8кг. Но... Автор прав! В задании сказано, что главное - максимальный груз! Я же решал задачу - максимальная загрузка! Извиняюсь за неумение читать...
|
|
|
|
Отправлено: 17.06.21 07:57. Заголовок: Если чуть-чуть измен..
Если чуть-чуть изменить мою программу, она будет выводить и максимальный груз, и максимальную загрузку... f = open('26-39.txt','r') a=[] n,m = map(int,f.readline().split()) sn=0; s =0 for i in f: if int(i)>=310 and int(i)<=320 : sn+=1 s+=int(i) else : a.append(int(i)) a = sorted(a) i=0 while s+a<=m : sn+=1 s+=a i+=1 i-=1; n=0; sm1=s; sm2=s while True : k=i while s-a[i-n]+a[k]<=m : k+=1 if k==i : break if n==0 : sm1 = s-a+a[k-1] # в этой строке почему-то пропадает индекс i - в предпросмотре все правильно! if s-a[i-n]+a[k-1]>sm2 : sm2 = s-a[i-n]+a[k-1] if sm2==m : break n+=1 print(sn,sm1,sm2) f.close()
|
|
|
|