Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678

Какое минимальное количество секунд вам требуется, чтобы сделать возможным прохождение уровня с заданными значениями

29.11.2020, 10:34. Показов 2060. Ответов 2

Студворк — интернет-сервис помощи студентам
Вы создаете уровень для некоторой мобильной игры. Уровень состоит из нескольких клеточек, выстроенных в ряд слева направо и пронумерованных последовательными натуральными числами, начиная с 1. Каждую клеточку вы можете оставить пустой или расположить там платформу.

Чтобы пройти уровень, игрок должен бросить мяч слева так, чтобы он сначала упал на платформу в некоторой клеточке p, отскочил от нее, затем отскочил от платформы в клеточке (p+k), затем от платформы в клеточке (p+2k), и так далее от платформы в каждой k-й клеточке до тех пор, пока он не перепрыгнет правее последней клеточки. Если хотя бы одна из этих клеточек не содержит платформы, то уровень с такими значениями p и k пройти нельзя.

У вас уже есть некоторый шаблон уровня, описываемый числами a1, a2, a3, ..., an, где ai=0 означает, что в клеточке i нет платформы, а ai=1 означает, что платформа там есть. Вы хотите модифицировать этот шаблон так, чтобы уровень можно было пройти с заданными p и k. За x секунд вы можете добавить платформу в любую пустую клеточку. За y секунд вы можете полностью убрать первую клеточку, при этом количество клеточек уменьшится на один, а оставшиеся клетки пронумеруются заново, сохраняя порядок. Других изменений вы вносить не можете. Вы не можете уменьшить число клеток до меньше p.
Какое минимальное количество секунд вам требуется, чтобы сделать возможным прохождение уровня с заданными значениями p и k?
Миниатюры
Какое минимальное количество секунд вам требуется, чтобы сделать возможным прохождение уровня с заданными значениями   Какое минимальное количество секунд вам требуется, чтобы сделать возможным прохождение уровня с заданными значениями  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.11.2020, 10:34
Ответы с готовыми решениями:

Вы хотите, чтобы массив перестал быть неубывающим. Какое минимальное количество шагов вам для этого потребуется?
У Аркадия есть неубывающий массив натуральных чисел a1,a2,…,an. Вы завидуете ему и хотите уничтожить это свойство. У вас есть так...

Какое минимальное количество шоколадок вам надо сегодня подарить профессору, чтобы завтра все студенты сдали экзамен?
Завтра студенты первого курса пойдут сдавать математический анализ. Экзамен будет принимать профессор Ильдар. Экзамен будет проходить по...

Найти, какое минимальное число поворотов на один зубчик требуется сделать, чтобы шестеренки вернулись в исходное состояние
Даны две сцепленные шестеренки. У одной шестеренки N зубцов, у другой – K. Требуется найти, какое минимальное число поворотов на один...

2
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,663
Записей в блоге: 29
29.11.2020, 11:11
Ychenyi, так ты дай свой логин/пароль для Яндекс шараги или сириуса или откуда ты приволок, мы войдем и все за тебя прорешаем. Чего трудиться то и тащить сюда картинки, которые запрещены правилами?
2
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
29.11.2020, 15:39
Лучший ответ Сообщение было отмечено Ychenyi как решение

Решение

Даже вспотел весь. Задачи все непростые. Дальше постарайся сам.

И кстати, логин/пароль никому не давай. Не думаю, что Welemir1 говорит правду. Не будет он решать эти задачи. Даже мне тяжело было.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
def get_time_costs_for_direct_jump(n, p, a, x, y):
    """Получение стоимостей
    корректировки массива a
    таким образом, чтобы был
    прямой прыжок со старта
    в клетку массива a, чей
    индекс изначально был i."""
    direct_jump_costs = [0] * n
    for i in range(n):
        #Если в целевой клетке нет
        #платформы, то добавим ее,
        #затратив x секунд, иначе
        #ничего не тратим.
        if a[i] == '0':
            add_cost = x
        else:
            add_cost = 0
        #Подсчитаем количество клеток,
        #которые необходимо удалить с
        #начала массива, чтобы можно
        #было допрыгнуть до требуемой
        #клетки.
        count_of_cells_to_remove_from_start = i - p
        if count_of_cells_to_remove_from_start < 0:
            count_of_cells_to_remove_from_start = 0
        #Подсчитаем стоимость удаления
        #клеток.
        remove_cost = y * count_of_cells_to_remove_from_start
        #Подсчитаем стоимость
        #трансформации массива
        #для возможности прямого
        #прыжка в клетку с индексом i.
        direct_jump_costs[i] = add_cost + remove_cost
    return direct_jump_costs
 
def get_time_costs_for_lengths(direct_jump, n, p, k, a, x):
    """Используя динамическое
    программирование, функция
    подсчитывает оптимальные
    стоимости преобразования
    для различных длин массивов."""
    dp = direct_jump[:]
    for i in range(p + k, n):
        #Вычисляем стоимость реализации
        #с отскоком. При необходимости
        #добавляем в позицию a[i]
        #платформу, с соответствующими
        #затратами времени.
        cost_with_bounce = dp[i - k]
        if a[i] == '0':
            cost_with_bounce += x
        #Если оказалось, что реализация
        #с отскоком лучше (дешевле),
        #чем прямой прыжок, то
        #запоминаем стоимость
        #этого (лучшего) варианта.
        if cost_with_bounce < dp[i]:
            dp[i] = cost_with_bounce
    return dp
 
def get_min_time(n, p, k, a, x, y):
    #Индексация в задаче с 1,
    #а у нас с 0 - корректируем p.
    p -= 1
    #Получение стоимости прямых прыжков.
    direct_jump = get_time_costs_for_direct_jump(n, p, a, x, y)
    #Получение оптимальных стоимостей
    #для разных длин получаемых после
    #преобразования массивов.
    dp = get_time_costs_for_lengths(direct_jump, n, p, k, a, x)
    #Получение минимальной стоимости.
    min_time = min(dp[max(n - k, p):])
    return min_time
 
t = int(input())
for i in range(t):
    n, p, k = map(int, input().split())
    a = input()
    x, y = map(int, input().split())
    print(get_min_time(n, p, k, a, x, y))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.11.2020, 15:39
Помогаю со студенческими работами здесь

Какое минимальное количество блоков необходимо, чтобы сделать лестницу в N ступенек?
Всем доброго времени суток! У меня возникла проблема с одной задачкой... Археологи раскопали Древний Храм, ко входу в который ведет...

Определить какое минимальное количество блоков необходимо, чтобы сделать лестницу в N ступенек
Археологи раскопали Древний Храм, ко входу в который ведет лестница, шириной в 1 (один) метр, из М ступенек различной длины и высоты....

Какое минимальное количество ходов должна сделать Катя, чтобы покрасить все точки в жёлтый цвет
На окружности отмечены n точек. Изначально все они белые. Катя играет в игру, закрашивая точки жёлтым. За один ход Катя может либо...

Какое минимальное количество времени потребуется, чтобы открыть чемодан?
Женя — большой любитель путешествий, поэтому в качестве подарка на Новый Год родители решили свозить его в Сочи. Женя очень обрадовался и...

Какое минимальное количество бросков необходимо сделать?
Доброго времени суток. Дано три группы монет. 1) 7 монет: вероятность орла 1/2; вероятность решки 1/2. 2) 3 монеты: вероятность орла...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru