На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение





Сообщение: 11
ссылка на сообщение  Отправлено: 06.05.23 10:27. Заголовок: Ошибка в условии 6321


В формулировке задачи имеется две пары абсолютно разных вопросов. Два - в усвловии: "Определите наибольшее время (в минутах), которое клиент стоял в очереди, и время начала обслуживания последнего клиента в том банкомате, в котором было обслужено наибольшее количество клиентов. Если таких банкоматов несколько, укажите наименьший подходящий номер банкомата." И еще два после входных данных: "Запишите в ответе два числа: наименьшее количество клиентов, которые были обслужены одним банкоматом за 24 часа, и время начала обслуживания последнего клиента этим банкоматом." Я так понял, отвечать следует на первую пару вопросов, поскольку именно для нее приведен пример. Однако наличие разных вопросов все равно путает.

Спасибо: 1 
ПрофильЦитата Ответить
Ответов - 6 [только новые]







Сообщение: 11
ссылка на сообщение  Отправлено: 28.05.23 00:35. Заголовок: а сошелся ли ответ?


MercuL` , подскажите, а сошелся ли у Вас ответ с предложенным?
Я решала, что так, что так.. Не сошлось( А у Вас?

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 13
ссылка на сообщение  Отправлено: 02.06.23 12:33. Заголовок: ovkuz пишет: Было б..


ovkuz пишет:

 цитата:
Было бы замечательно, если бы автор показал разбор и предоставил свое решение.



ovkuz пишет:

 цитата:
подскажите, а сошелся ли у Вас ответ с предложенным?



Ответ сошелся. Вот решение. Постараюсь объяснить что-то, но только если сам вспомню. Давно делал.

 
file = open('26-112.txt')
n, m = map(int, file.readline().split())

banks = []
for i in range(n):
banks.append([0])
clients = []
for i in file:
a, b = map(int, i.split())
clients.append([a, b])
clients.sort(key=lambda x: x[0])
waits = []

for i in range(len(clients)):
wait = 0
flag = False
while flag != True:
for j in range(len(banks)):
if clients[ i][0] + wait >= banks[j][-1]:
banks[j].append(clients[ i][0]+wait+clients[ i][1])
flag = True
waits.append(wait)
break
wait += 1
if clients[ i][0] + wait >= 1440:
break
print(max(waits))
mx_len = 0
mx_client = 0
for i in banks:
if len(i) > mx_len:
mx_client = i[-2]
mx_len = len(i)
print(mx_client)


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 13
ссылка на сообщение  Отправлено: 09.06.23 11:55. Заголовок: MercuL` пишет: ..


MercuL` пишет:

 цитата:
Ответ сошелся


Спасибо большое!
Я сообразила, я упустила из виду, что нужно смотреть только за сутки.
Но ответ у меня все равно другой. Время ожидания у меня 652 мин.
Дело в том, что у Вас проверка на вылет за пределы суток происходит уже после того, как Вы записали время в список банкоматов (banks[j].append(clients[ i][0]+wait+clients[ i][1]) ) и записали время ожидания в список времени ожидания (waits.append(wait)).
Если Вы спринтуете ваш список банкоматов, то увидите в конце ... 1414, 1432, 1434, 1446]] То есть вылет на следующие сутки.
Возможно, я не права, но мне так кажется)

И все таки хотелось обратиться к Константину Юрьевичу с просьбой поправить формулировку в задаче. Потому что всех будут смущать и дальше два противоположных вопроса, имеющихся в задаче:
"Определите наибольшее время (в минутах), которое клиент стоял в очереди, и время начала обслуживания последнего клиента в том банкомате, в котором было обслужено наибольшее количество клиентов. Если таких банкоматов несколько, укажите наименьший подходящий номер банкомата."
"Запишите в ответе два числа: наименьшее количество клиентов, которые были обслужены одним банкоматом за 24 часа, и время начала обслуживания последнего клиента этим банкоматом."

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 14
ссылка на сообщение  Отправлено: 09.06.23 12:16. Заголовок: Вот мой пример решен..


Вот мой пример решения:
f = open('26-112.txt')
n, m = [int(i) for i in f.readline().split()]
print(n, m)
b = [[0] * 3 for i in range(n)]
a = []
for i in range(m):
nv, t = [int(i) for i in f.readline().split()]
a.append([nv, nv + t])
# print(a[:100])
a = sorted(a, key=lambda x: x[0])
print(a[:100])
mx = 0
for i in range(m):
for j in range(n):
if a[0] >= b[j][1]:
b[j][0] = a[0]
b[j][1] = a[1]
b[j][2] = b[j][2] + 1
break
else:
mn = min(b, key=lambda x: x[1])
j = b.index(mn)
if a[1] + (b[j][1] - a[0]) > 1440:
break
else:
to = b[j][1] - a[0]
mx = max(mx, to)
b[j][0] = b[j][1]
b[j][1] = a[1] + to
b[j][2] = b[j][2] + 1
print(mx)
maxb = max(b, key=lambda x: x[2])
print('maxb', maxb)
minb = min(b, key=lambda x: x[2])
print('minb', minb)
print(b)

Я тут ответила на оба вопроса:

652 - время ожидания макс
maxb [1424, 1432, 90] - банкомат с макс кол-вом клиентов
minb [1409, 1427, 73] - банкомат с мин кол-вом клиентов

Буду благодарна, MercuL, если глянете одним глазочком и подскажете, что не так)
Сорри, не получилось сделать отступы(

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 12
ссылка на сообщение  Отправлено: 28.05.23 00:48. Заголовок: И странный ответ и в самом примере


"При таких исходных данных наибольшее время ожидания (10) будет у клиента со временем обслуживания 9. Наибольшее число клиентов (3) обслужит 1-й банкомат: это клиенты со временем обслуживания 8, 4 и 14. Последний клиент начинает работу со 1-м банкоматом на 13-й минуте. Ответ: 10 13"
Но похоже, что последний клиент пойдет ко 2-му банкомату, и сможет это сделать только на 18 минуте. Именно поэтому время ожидания и составило (18 - 8) 10 минут.
Так что ответ у меня не сошелся нигде с автором задачи(
Было бы замечательно, если бы автор показал разбор и предоставил свое решение.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 4005
ссылка на сообщение  Отправлено: 04.06.23 12:07. Заголовок: Это задача 26.116 из..


Это задача 26.116 из основного сборника, решение есть на сайте.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1822
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет