|
44 / 31 / 13
Регистрация: 19.12.2022
Сообщений: 107
|
||||||
Коля и дата-центры21.03.2023, 14:03. Показов 19675. Ответов 34
Метки нет (Все метки)
Рано или поздно все крупные IT-компании создают свои дата-центры. Коля только устроился в такую компанию и еще не успел во всем разобраться. В его компании есть N дата-цетров,в каждом дата-центре установлено M серверов. Из-за большой нагрузки серверы могут выключаться. Из-за спешки при постройке дата-центров включить только один сервер не получается, поэтому приходится перезагружать весь дата-центр. У каждого дата-центра есть два неотрицательных целочисленных параметра: R(i) — число перезапусков i-го дата-центра и A(i) — число рабочих (не выключенных) серверов на текущий момент в i -м дата-центре. Коля получил задачу по сбору некоторых метрик, которые в будущем позволят улучшить работу дата-центов. Для этого Коля собрал данные о Q событиях, произошедших за текущий день. Коля справился с этой задачей, но просит помочь и проверить свои результаты.
Формат ввода: В первой строке входных данных записано 3 положительных целых числа n , m , q ( 1 ≤ q ≤ 1 0 5 , 1 ≤ n ⋅ m ≤ 1 0 6 ) — число дата-центров, число серверов в каждом из дата-центров и число событий соответственно. В последующих q строках записаны события, которые могут иметь один из следующих видов: RESET i — был перезагружен i -й дата-центр ( 1 ≤ i ≤ n ) DISABLE i j — в i -м дата-центре был выключен j -й сервер ( 1 ≤ i ≤ n , 1 ≤ j ≤ m ) GETMAX — получить номер дата-центра с наибольшим произведением R(i) ∗ A(i) GETMIN — получить номер дата-центра с наименьшим произведением R(i) ∗ A(i) Формат вывода: На каждый запрос вида GETMIN или GETMAX выведите единственное положительное целое число — номер дата-центра, подходящий под условие. В случае неоднозначности ответа выведите номер наименьшего из дата-центров. Пример ввода: 3 3 12 DISABLE 1 2 DISABLE 2 1 DISABLE 3 3 GETMAX RESET 1 RESET 2 DISABLE 1 2 DISABLE 1 3 DISABLE 2 2 GETMAX RESET 3 GETMIN Пример вывода: 1 2 1 Еще пример ввода: 2 3 9 DISABLE 1 1 DISABLE 2 2 RESET 2 DISABLE 2 1 DISABLE 2 3 RESET 1 GETMAX DISABLE 2 1 GETMIN Пример вывода: 1 2 Примечания Обратите внимание на 2 пример. DISABLE приходится для уже выключенного сервера. В данном случае сервер по-прежнему остаётся выключенным. У меня уже есть код:
0
|
||||||
| 21.03.2023, 14:03 | |
|
Ответы с готовыми решениями:
34
Дата-Центры Как отсортировать посетителей к примеру дата центры типа Гугл и частную сеть Нужно создать функцию которая будет вычислять центры этих фигур,а потом создать еще одну функцию которая уже будет рисовать эти точки(центры)в фигурах |
|
2755 / 2062 / 509
Регистрация: 17.02.2014
Сообщений: 9,491
|
|
| 21.03.2023, 15:51 | |
|
0
|
|
|
290 / 170 / 92
Регистрация: 21.03.2016
Сообщений: 400
|
||||||
| 21.03.2023, 21:00 | ||||||
|
Во втором примере никак не получается 1 2, вручную уже пересчитал, и программу накидал. Все равно получается 1 3.
Добавлено через 1 минуту Если предпоследнюю строчку заменить на DISABLE 2 2, то получается. Добавлено через 1 минуту Кликните здесь для просмотра всего текста
1
|
||||||
|
Status 418
|
|||||||||||
| 22.03.2023, 07:12 | |||||||||||
|
Berbentsev, как 1 3 получилось? дата-центров же всего 2.
Добавлено через 10 минут 34 строка, наверное в range(1, n + 1) ?
накидал "решение в лоб":
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 25.03.2023
Сообщений: 1
|
|
| 25.03.2023, 20:12 | |
|
RockSun, У меня есть 2 решения, одно не проходит по времени (23), второе не проходит 21й тест. Не хочешь вместе подумать? Или мне подсказать, если ты уже справился)
0
|
|
|
1 / 1 / 2
Регистрация: 24.07.2013
Сообщений: 8
|
|
| 12.04.2023, 13:16 | |
|
Ну как, получилось?
Таймлимит на 40+ каком-то тесте. Надо оптимизировать поиск максимума/минимума. Использование функций max/min при операции GETMAX или GETMIN это O(n). В задаче вся суть - как-то поддерживать эти максимумы и минимумы, чтобы их за O(1) получить. По идее тут надо использовать 2 кучи - одну maxHeap , другую minHeap. (очередь с приоритетами по сути). И иметь в ней операцию - изменение приоритета (она за логарифм работает). А взятие максимума минимума будет за константу. Возможно есть ещё какие-то способы, без знания структур данных, но ничего не придумалось
1
|
|
|
0 / 0 / 0
Регистрация: 09.11.2020
Сообщений: 1
|
|
| 14.04.2023, 18:14 | |
|
wumpochuck, привет
мой код тоже остановился на 21 тесте ты в итоге нашел решения этому?
0
|
|
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|
| 15.04.2023, 11:10 | |
|
Юлия27, Falazure всем рассказал что надо делать.
Да, есть проблема, что во встроенной реализации кучи на питоне нет удаления по значению. Значит нужно реализовать кучу или двоичное дерево поиска самостоятельно. Что, как заметил eaa, только пойдет вам на пользу.
0
|
|
|
0 / 0 / 0
Регистрация: 15.04.2023
Сообщений: 1
|
|
| 15.04.2023, 23:25 | |
|
Получилось исправить ошибки?
0
|
|
|
3 / 2 / 1
Регистрация: 17.09.2021
Сообщений: 5
|
|
| 16.04.2023, 00:24 | |
|
Red white socks, сделал через ДП, но wa на 6 тесте, думаю проблема getmax/getmin, из за этого условия: "В случае неоднозначности ответа выведите номер наименьшего из датацентров.". Криво реализовал, может есть какие идеи, как хранить пары (R*A, N), чтобы доставать их за logn?
0
|
|
|
Status 418
|
||||||
| 16.04.2023, 11:59 | ||||||
осталось min и max в кучу кидать.
3
|
||||||
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|
| 16.04.2023, 12:50 | |
Сообщение было отмечено rim41 как решение
Решение
nick]Grootys[/nick], в треде уже 2 раза было сказано.
Ок. Давайте распишу подробно. Данную задачу могут решить две структуры: куча с индексацией и двоичное дерево поиска. Рассмотрим оба подробнее (рассматриваем для поиска минимума, для максимума дублируем структуру с противоположными элементами) Куча - двоичное дерево, у которого оба потомка больше родителя. Основное свойство - на вершине кучи всегда будет минимальный элемент. В питоне есть реализация heapq. Это список у которого потомками элемента с индексом k являются элементы с индексами 2k+1, 2k+2. В данной задаче мы кладем в кучу кортежи (R_i*A_i, i) для i-го дата-центра. Но при изменении произведения кучу надо перестраивать. Для этого надо найти элемент и увеличить ключ, после чего кучу перестроить. Увеличение ключа k-го элемента производится непубличным методом _siftdown. Остается найти элемент по ключу. И здесь это проблема, потому что в среднем это О(n). Поэтому нужна индексация - словарь, в котором ключу будет соответствовать индекс элемента в куче. Но это потребует ручной реализации кучи и ее методов с поддержкой индексации. Поэтому отложим пока в сторону. Давайте рассмотрим двоичное дерево поиска. Оно отличается от кучи дополнительным свойством: левый потомок меньше правого. И здесь поиск элемента идет за логарифм (отсюда и название структуры). Изменение ключа можно проводить удалением/вставкой. И всё работает. Одна проблема - в питоне нет встроенной реализации. Но хорошая новость - в инете их миллион. Upd. На этом можно было поставить точку, но пока писал - увидел пост eaa и мне сразу же пришла "гениальная" идея. Не будем мучаться с ручной реализацией, а берем стандартный heapq. При изменении ключа - старый не удаляем, просто добавляем новый. Тогда если минимум в куче не соответствует актуальному состоянию, то просто удаляем его и берем следующий. В код eaa потребуется внести тогда всего несколько строчек.
2
|
|
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|
| 16.04.2023, 13:17 | |
|
eaa, я не сомневался, что вы видели эту опцию сразу)
0
|
|
|
3 / 2 / 1
Регистрация: 17.09.2021
Сообщений: 5
|
||||||
| 16.04.2023, 14:00 | ||||||
Сообщение было отмечено RockSun как решение
Решение
eaa, Red white socks, Решил таким способом, но TL на 52 тесте
2
|
||||||
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|
| 16.04.2023, 14:19 | |
|
Grootys, тут надо тестировать - насколько критичен этот таймлимит. По коду могу сказать, что показатель R*A надо считать только один раз, запоминая. Количество умножений уменьшится кратно и на 10К запросах это может быть пара десятых секунды, что может и критично.
0
|
|
|
3 / 2 / 1
Регистрация: 17.09.2021
Сообщений: 5
|
|
| 16.04.2023, 14:32 | |
|
Red white socks, eaa, храню актуальные R*A в словаре и при поиске актуального в getmin/getmax достаю их из словаря за O(n), также запустил на PyPy, теперь падает с TL на 54 тесте))) Какая то безысходность
0
|
|
| 16.04.2023, 14:32 | |
|
Помогаю со студенческими работами здесь
20
Ходил ли Коля в кино? На чем сидит Коля, Света и Оля? Задача по перемещению колец через коля Коля - легкоатлет. Он очень любит челночный бег Какое количество информации содержится в сообщении «Коля учится на 4 и 5» Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2.
Номеклатура. . .
|