Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 02.03.2022
Сообщений: 4

Минимум максимума

02.03.2022, 13:18. Показов 6603. Ответов 4

Студворк — интернет-сервис помощи студентам
Задача:

Даны n нестрого возрастающих массивов Ai и m нестрого убывающих массивов Bj. Все массивы имеют одну и ту же длину
l. Далее даны q запросов вида (i,j), ответ на запрос – такое k, что max(Aik,Bjk) минимален. Если таких k несколько, можно вернуть любое.

Формат входных данных
На первой строке числа n,m,l (1≤n,m≤900;1≤ l≤3000). Следующие n строк содержат описания массивов Ai. Каждый массив описывается перечислением l элементов. Элементы массива – целые числа от 0 до 105−1. Далее число m и описание массивов Bj в таком же формате. Массивы и элементы внутри массива нумеруются с 1. На следюущей строке число запросов q (1≤q≤n⋅m). Следующие q строк содержат пары чисел i,j (1≤i≤n, 1≤j≤m).

Формат результата
Выведите q чисел от 1 до l – ответы на запросы.

Примеры
Входные данные
4 3 5
1 2 3 4 5
1 1 1 1 1
0 99999 99999 99999 99999
0 0 0 0 99999
5 4 3 2 1
99999 99999 99999 0 0
99999 99999 0 0 0
12
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
4 1
4 2
4 3
Результат работы
3
4
3
5
4
3
1
2
2
4
4
3

Есть два решения:

Первое в лоб, разумеется не проходит по времени

sp_A, sp_B, AB_max = [], [], []
n, m, l = list(map(int, input().split()))
for i in range(n):
A = list(map(int, input().split()))
sp_A.append(A)

for j in range(m):
B = list(map(int, input().split()))
sp_B.append(B)

q = int(input())
for p in range(q):
i, j = list(map(int, input().split()))
for u in range(l):
AB_max.append(max(sp_A[i-1][u], sp_B[j-1][u]))
print(AB_max.index(min(AB_max))+1)
AB_max = []


Второе чуть быстрее, но в 3 секунды всё равно не укладывается

sp_A, sp_B, AB_max = [], [], []

n, m, l = list(map(int, input().split()))

for i in range(n):
A = list(map(int, input().split()))
sp_A.append(A)

for j in range(m):
B = list(map(int, input().split()))
sp_B.append(B)

q = int(input())

for p in range(q):
i, j = list(map(int, input().split()))
AB_max.append(max(sp_A[i-1][0], sp_B[j-1][0]))
x = 1
for u in range(1, l):
AB_max.append(max(sp_A[i-1][u], sp_B[j-1][u]))
if AB_max[u] <= AB_max[u-1]:
x = x+1
else:
break
print(x)
AB_max = []

Как сделать так, чтобы используя бинарый поиск уложиться в отведённое время?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.03.2022, 13:18
Ответы с готовыми решениями:

Нахождения максимума
Описать функцию нахождения максимума для двух величин. Ввести с клавиатуры a,b,c,d. Для каждой пары величин найти максимальную, а потом...

Три максимума
Прочитайте последовательность целых чисел. Выведите список, в котором сначала будут стоять первые три самых больших числа...

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

4
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
02.03.2022, 15:53
Ketlin_Morgan, а где ты используешь бин.поиск?
0
0 / 0 / 0
Регистрация: 02.03.2022
Сообщений: 4
02.03.2022, 16:54  [ТС]
Не использую, в том и проблема. Его нужно использовать, но я не понимаю, где его здесь прикрутить, массив то не отсортирован.

Добавлено через 55 минут
eaa, есть идеи, как это можно осуществить?
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
02.03.2022, 17:20
вроде по примеру правильно:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
n, m, l = map(int, input().split())
a =[list(map(int, input().split())) for _ in range(n)]
b =[list(map(int, input().split())) for _ in range(m)]
 
q = int(input())
for _ in range(q):
    i, j = map(int, input().split())
    i -= 1
    j -= 1
    # print(a[i])
    # print(b[j])
    lo = 0
    hi = l - 1
    m0 = max(a[i][hi], b[j][hi])
    while lo < hi:
        mid = (lo + hi) // 2
        mc = max(a[i][mid], b[j][mid])
        if mc < m0:
            m0 = mc
            hi = mid
        else:
            lo = mid + 1
    print(lo + 1)
0
0 / 0 / 0
Регистрация: 02.03.2022
Сообщений: 4
02.03.2022, 17:34  [ТС]
eaa, не проходит при 3 1 и 4 1. Получается 5 и 3 вместо 1 и 4
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.03.2022, 17:34
Помогаю со студенческими работами здесь

Индекс максимума последовательности
Добрый день! Условие задачи ниже: Условие Последовательность состоит из натуральных чисел и завершается числом 0. Определите...

Задача «Индекс максимума последовательности»
Последовательность состоит из натуральных чисел и завершается числом 0. Определите индекс наибольшего элемента последовательности. Если...

Нахождение максимума через цикл for
Друзья самостоятельно решил изучить Python и поставил себе задачу найти максимум разными способами. собственно вот код, но не могу...

Оптимизация обновления максимума и минимума
Добрый вечер Сегодня мне попался код обновления максимума и минимума, решил его протестить на скорость Мне по синтаксису...

Минимум по х от максимума по у
Имеется функция f, зависящая от двух параметров х и у. Нужно найти минимум по х от максимума по у ото этой функции. Перепробовал много...


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

Или воспользуйтесь поиском по форуму:
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 - 2025, CyberForum.ru