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

Прямоугольники

08.07.2020, 14:18. Показов 19811. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прямоугольники
Дана последовательность N прямоугольников различной ширины и высоты (wi,hi). Прямоугольники расположены, начиная с точки (0,0), вправо на оси OX вплотную друг за другом. Требуется найти M — площадь максимального прямоугольника (параллельного осям координат), который можно вырезать из этой фигуры.

Формат входных данных

В первой строке задано число N (1≤N≤105). Далее идут N строк. В каждой строке содержатся два числа: ширина и высота i-го прямоугольника (1<wi≤3⋅104, 0≤hi≤3⋅104).

Формат выходных данных

Выведите искомое число M.

Примеры
Ввод
Вывод
3
4 3
2 1
2 5
12
3
4 3
2 1
3 5
15
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.07.2020, 14:18
Ответы с готовыми решениями:

Задача на прямоугольники
Дети племени «Тумба-Юмба» любят играть в логические игры. Однажды вождь племени придумал детям задачу на построение прямоугольников...

Прямоугольники и квадраты
Напишите отдельный модуль, экспортирующий следующий функции:  PrintRectangle(a, b, file) – печатает в файл с именем file прямоугольник...

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

7
 Аватар для palva
4272 / 2966 / 691
Регистрация: 08.06.2007
Сообщений: 9,915
Записей в блоге: 4
08.07.2020, 14:43
dmitrii2000, вы задачу поняли? Беретесь ответить на мои вопросы по условию.
Просто мне в лом формулировать и задавать вопросы, на которые никто не собирается отвечать.
0
09.07.2020, 07:17

Не по теме:

вангую стек

0
Заблокирован
11.07.2020, 11:01
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

palva, не можете ответить - не отвечайте.
Это мой проверенный код:
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
def push(stack, elem):
    stack.append(elem)
    return elem
def top(stack):
    return stack[-1]
def pop(stack):
    return stack.pop()
def size(stack):
    return len(stack)
def power(a, n):
    if n == 0:
        return 1
    elif n % 2 == 0:
        return power(a * a, n // 2)
    else:
        return power(a, n - 1) * a
inf = 2 * power(10, 9) + 1
w, h = [-inf], [-inf]
n = int(input())
for i in range(n):
    wi, hi = map(int, input().split())
    w.append(wi)
    h.append(hi)
w.append(-inf)
h.append(-inf)
ans = [[0, 0] for i in range(n + 2)]
stack = []
push(stack, 0)
for i in range(1, n + 2):
    curr = h[i]
    while h[top(stack)] > curr:
        ans[pop(stack)][1] = i
    push(stack, i)
stack = []
push(stack, 0)
for i in range(n + 1, 0, -1):
    curr = h[i]
    while h[top(stack)] > curr:
        ans[pop(stack)][0] = i
    push(stack, i)
p = [0]
for i in range(1, n + 1):
    p.append(p[-1] + w[i])
p.append(p[-1])
m = -inf
for i in range(1, n + 1):
    li, ri = ans[i][0], ans[i][1]
    S = h[i] * (p[ri - 1] - p[li])
    m = max(m, S)
print(m)
3
30 / 29 / 2
Регистрация: 27.06.2020
Сообщений: 14
11.07.2020, 13:24
Подскажите, пожалуйста, почему программа может выдавать ошибку?
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
inf = int(2e9) + 1
t = int(input())
b = []
 
for i in range(t):
    w, h = map(int, input().split())
    b.extend([h] * w)
    
a = [-inf] + b + [-inf]
n = len(a) - 2
 
r = [0] * (n + 2)
l = [0] * (n + 2)
 
st = [0]
s = []
for i in range(1, n + 2):
    while a[st[-1]] > a[i]:
        r[st.pop()] = i
    st.append(i)
    
st = [n + 1]
 
for i in range(n, 0, -1):
    while a[st[-1]] > a[i]:
        l[st.pop()] = i
    st.append(i)
    
for i in range(len(a)):
    s.append(a[i] * (abs(r[i] - l[i] - 1)))
    
print(max(s))
0
1 / 1 / 0
Регистрация: 12.07.2020
Сообщений: 1
12.07.2020, 16:11
1timchik1,
С программой всё в порядке, написал почти такую же для сириуса, тоже разбивал прямоугольнике в ширину 1 и добавлял в список a(задача 2 в блоке), у них что-то с тестами не то, вот такая же задача, проверь https://informatics.mccme.ru/m... terid=1656
1
1 / 1 / 0
Регистрация: 26.06.2020
Сообщений: 30
12.07.2020, 16:58
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
def push(stack, elem):
    stack.append(elem)
    return elem
def top(stack):
    return stack[-1]
def pop(stack):
    return stack.pop()
def size(stack):
    return len(stack)
def power(a, n):
    if n == 0:
        return 1
    elif n % 2 == 0:
        return power(a * a, n // 2)
    else:
        return power(a, n - 1) * a
inf = 2 * power(10, 9) + 1
w, h = [-inf], [-inf]
n = int(input())
for i in range(n):
    wi, hi = map(int, input().split())
    w.append(wi)
    h.append(hi)
w.append(-inf)
h.append(-inf)
ans = [[0, 0] for i in range(n + 2)]
stack = []
push(stack, 0)
for i in range(1, n + 2):
    curr = h[i]
    while h[top(stack)] > curr:
        ans[pop(stack)][1] = i
    push(stack, i)
stack = []
push(stack, 0)
for i in range(n + 1, 0, -1):
    curr = h[i]
    while h[top(stack)] > curr:
        ans[pop(stack)][0] = i
    push(stack, i)
p = [0]
for i in range(1, n + 1):
    p.append(p[-1] + w[i])
p.append(p[-1])
m = -inf
for i in range(1, n + 1):
    li, ri = ans[i][0], ans[i][1]
    S = h[i] * (p[ri - 1] - p[li])
    m = max(m, S)
print(m)
0
0 / 0 / 0
Регистрация: 14.07.2020
Сообщений: 5
14.07.2020, 19:35
попробуй в строке
Цитата Сообщение от 1timchik1 Посмотреть сообщение
b.extend([h] * w)
умножение в квадратные скобки занести, иначе в массив добавляются w чисел h
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2020, 19:35
Помогаю со студенческими работами здесь

Найти минимальную площадь прямоугольника, в который можно поместить все заданные прямоугольники
В двумерном пространстве заданы n прямоугольников с вершинами в целочисленных координатах и сторонами параллельными осям координат. Найти...

Можно ли прямоугольники приложить друг к другу так, чтобы получился новый прямоугольник?
Даны два прямоугольника с размерами a*b и c*d. (a, b, c, d натуральные числа). Можно ли их приложить друг к другу так, чтобы получился...

Прямоугольники-1
Необходимо найти длины сторон всех прямоугольников, площадь которых равна заданному натуральному числу S. Стороны должны быть выражены...

Вложенные прямоугольники
Разработайте программу, которая получает от пользователя натуральное число п. а затем и пар чисел - стороны прямоугольников. Программа...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru