С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/55: Рейтинг темы: голосов - 55, средняя оценка - 4.93
2 / 2 / 0
Регистрация: 03.05.2020
Сообщений: 202

Распределение призов

12.08.2020, 05:49. Показов 11549. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Алиса и Боб стали победителями телевикторины, и теперь им предстоит выбрать себе призы. На выбор предлагаются n призов, пронумерованных от 1 до n.

Распределение призов происходит следующим образом. Организаторы телевикторины сообщают победителям целое положительное число k (1≤k≤n/3). Сначала Алиса выбирает себе любые k подряд идущих номеров призов. Потом Боб выбирает себе k подряд идущих номеров призов, при этом он не может выбирать номера, которые уже выбрала Алиса. После этого победители забирают выбранные ими призы.

Алиса хорошо знает Боба и для каждого приза выяснила его ценность для Боба, которая является целым положительным числом. Алиса обижена на Боба и хочет выбрать свои призы так, чтобы суммарная ценность призов, которые достанутся Бобу, была как можно меньше. При этом Алису не волнует, какие призы достанутся ей.

Требуется написать программу, которая по информации о ценности призов и значению k определит, для какого минимального значения x Алиса сможет добиться того, чтобы Боб не смог выбрать призы с суммарной ценностью больше x.

Входные данные

Первая строка входных данных содержит два целых числа: n — общее количество призов и k — количество подряд идущих номеров призов, которое должен выбрать каждый из победителей (3≤n≤100000, 1≤k≤n/3).

Вторая строка содержит n целых положительных чисел: a1, a2, …, an. Для каждого приза указана его ценность для Боба (1≤ai≤109)

Выходные данные

Выведите одно число — минимальное значение x, для которого Алиса сможет добиться того, чтобы Боб не смог выбрать призы с суммарной ценностью больше x.

Пояснения к примеру

В приведённом примере Алиса может, например, выбрать 4-й и 5-й призы. После этого для Боба оптимально выбрать 9-й и 10-й призы с суммарной ценностью 7.

Примеры
Ввод
Вывод
10 2
1 2 4 5 2 4 2 2 1 6
7
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.08.2020, 05:49
Ответы с готовыми решениями:

Определить сколько призов можно получить за указанные билетики
Большая сеть супермаркетов объявила об акции в магазинах. Теперь можно собирать билетики при покупке чего-нибудь и по предъявлению...

Случайное распределение призов в EXCEL
Привет всем. Столкнулся с задачей: необходимо в excelе имитировать лотарею. Подробно: Есть 1270 участников и 1000 призов: 48 сумок ...

Розыгрыши призов
Подскажите как реализовать систему розыгрышов на php. Суть в том что человек регистрируется в розыгрыше и ждёт пока наберётся...

4
Эксперт Python
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
12.08.2020, 08:47
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
n, c = map(int, input().split())
a = list(map(int,input().split()))
b =[0] * (n-c+1)
b[0] = sum(a[:c])
# Префиксная сумма ценности призов в "окне"
# для каждого i
for i in range(1,n-c + 1) :
    b[i] = b[i-1] + a[i+c-1] - a[i-1]
p = [0] * (n-c+1)
s = [0] * (n-c+1)
# Определение максимума ценности "набора" призов
for i in range(c,n-c+1)  :
    p[i] = max(p[i-1],b[i-c])
# Определения  максимума "набора" призов,
# если Алиса выбрала i-ый "набор" (второй максимум)
for i in range(n-2*c,-1,-1) :
    s[i] = max(s[i+1],b[i+c])
minc = int(1e15)
# Нахождение минимального из двух максимумов
for i in range(n-c+1) :
    minc = min(minc,max(p[i],s[i]))
print(minc)
0
0 / 0 / 0
Регистрация: 05.07.2020
Сообщений: 10
29.08.2020, 22:24
Добрый день!
Не пойму смысла задачи.
10 3
8 9 10 7 6 5 4 3 2 1
Твоя программа отдает 12. Как будто Алиса берет 6,7,8 призы, в сумме 12 (5 4 3). А Боб ведь может выбрать 1,2,3 например, это в сумме явно больше 12 => 27 (8+9+10). Помоги разобраться пожалуйста.
0
Эксперт Python
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
30.08.2020, 00:12
JIvan,
Нет
Алиса заберет призы 10, 7, 6
Боб из оставшихся может забрать (при условии трех ПОДРЯД - в условии прописано):
из 8 9 * * * 5 4 3 2 1 только максимум 5, 4, 3 = 12 в сумме.
Что и выводит программа... - макс сумма, которую потом может Боб забрать.
В условии не прописан вывод призов Алисы, поэтому и путаница

Добавлено через 28 минут
По другому (код программы):
Список "p" - наборы призов с макс суммой слева.
Список "s" - справа
Например для i = 4 список оставшихся призов будет:
8 9 10 7 * * * 3 2 1
Максимальный набор слева ("p") равен 8 9 10 = 27; 9 10 7 = 26
Соответственно р[4] = max(27,26) = 27 (определяется в 12-13 строчках)
Макс набор справа ("s") = 3 2 1 = 6 (16-17 строчки)
Из них определяется максимум = max(27,6) = 27
В итоге для i = 4 максимум 27.
Проходя по всем i создаем списки "s" и "р".
В конце для каждого i определяем максимум из них и выбираем минимальный из них (20-21 строчки)
А Алисе на ценность своего набора призов как то так ...)))
1
0 / 0 / 0
Регистрация: 05.07.2020
Сообщений: 10
30.08.2020, 00:58
Спасибо! Разобрался. Тупанул вначале. Начал решать бинарным поиском по ответу)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.08.2020, 00:58
Помогаю со студенческими работами здесь

Сколько способов распределения призов?
3 приза, 9 претендентов. Сколько способов распределения призов, если каждый претендент может получить призы по нескольким номинациям и по...

Рандомный розыгрыш призов с условиями
Помогите пожалуйста написать розыгрыш призов с условиями на JavaScript. Задача: Разыграть призы. Написала код, но в нем есть баги (Я...

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

Нужен счётчик участников для получения призов - HTML
Добрый день Всем! Вопрос состоит в следующем. Я хочу провести викторину на сайте с ценными, поощрительными и утешительными призами. ...

Каковы шансы у Вани, если призов 200 штук
Есть 16500 лотерейных билетов. Ваня купил 2 билета. Каковы шансы у Вани, если призов 200 штук?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru