0 / 0 / 0
Регистрация: 25.11.2022
Сообщений: 19
|
||||||
1 | ||||||
Определить количество клеток, в которых убран весь мусор10.09.2024, 16:30. Показов 2655. Ответов 31
Метки нет (Все метки)
Однажды, после неудачно написанного контеста на Codeforces, Михаил окончательно разочаровался в своей карьере спортивного программиста и решил устроиться на работу дворником. Однако, даже на такую должность его ждало собеседование.
В качестве собеседования Михаилу предложили очистить от мусора довольно большой двор. Для удобства представим двор как прямоугольную таблицу, состоящую из n строк и m столбцов. Строки пронумерованы сверху вниз числами от 1 до n, а столбцы — слева направо числами от 1 до m. На пересечении i-й строки и j-го столбца находится клетка с координатами (i,j).Изначально в каждой клетке двора лежит огромная куча мусора. Михаил в рамках своего собеседования произвел k операций, каждая из которых была одного из двух типов: Убрать весь мусор во всех клетках (i,j), таких что i+j=s; Убрать весь мусор во всех клетках (i,j), таких что i−j=d. Ваша задача — определить количество клеток, в которых Михаил убрал весь мусор. Формат входных данных Первая строка содержит два целых числа n и m (1≤n,m≤10**9) — размеры двора. Вторая строка содержит одно целое число k(0≤k≤300000) — количество операций, совершенных Михаилом. Каждая из следующих k строк содержит описание очередной операции, совершенной Михаилом в следующем формате: + s (2≤s≤n+m) — данная операция означает, что Михаил убрал весь мусор во всех клетках (i,j), таких что i+j=s; - d(1−m≤d≤n−1)— данная операция означает, что Михаил убрал весь мусор во всех клетках (i,j), таких что i−j=d. Формат выходных данных Выведите одно целое число — количество клеток, в которых Михаил убрал весь мусор. Примеры Входные данные 4 4 4 + 4 + 2 - 0 - -3 Выходные данные 7 Примечания Рассмотрим действия Михаила в примере из условия: Михаил убирает мусор из клеток (i,j), для которых i+j=4. Это клетки с координатами (1,3), (2,2) и (3,1). Михаил убирает мусор из клеток (i,j), для которых i+j=2. Это клетка с координатами (1,1). Михаил убирает мусор из клеток (i,j), для которых i−j=0. Это клетки с координатами (1,1), (2,2), (3,3) и (4,4). Михаил убирает мусор из клеток (i,j), для которых i−j=−3. Это клетка с координатами (1,4). Таким образом, мусор был убран из клеток (1,1), (1,3), (1,4), (2,2), (3,1), (3,3) и (4,4). Написал код на с++, но он падает по времени на 17 тесте, кто может помочь с оптимизацией)
0
|
10.09.2024, 16:30 | |
Ответы с готовыми решениями:
31
Закрасить минимальное количество клеток, так, чтобы множество черных клеток стало выпуклым Определить количество раскрасок полоски из N клеток Определить количество пустых клеток, которые не бьются ни одной из фигур Определить количество клеток шарфа которые покрашены в заданный цвет |
Модератор
13698 / 10902 / 6471
Регистрация: 18.12.2011
Сообщений: 29,105
|
|||||||||||
11.09.2024, 07:08 | 2 | ||||||||||
можно заменить на
0
|
0 / 0 / 0
Регистрация: 25.11.2022
Сообщений: 19
|
|
11.09.2024, 07:20 [ТС] | 3 |
Спасибо, но тут уже идея плохая. Я написал по другому. И упало на 47 тесте. Ваше оптимизация вообще выдает неверный ответ).
Буду благодарен вашим идеям по решению =).
0
|
573 / 475 / 99
Регистрация: 05.08.2022
Сообщений: 2,598
|
|
11.09.2024, 08:08 | 4 |
Могут ли s и d повторяться в очереди операций?
0
|
Модератор
13698 / 10902 / 6471
Регистрация: 18.12.2011
Сообщений: 29,105
|
|
11.09.2024, 09:00 | 5 |
Идея хорошая,
она существенно сокращает количество итераций. Проверьте только, правильно ли я написал граничные условия (+-1, <,<=).
0
|
573 / 475 / 99
Регистрация: 05.08.2022
Сообщений: 2,598
|
|
11.09.2024, 09:26 | 6 |
Мне думается, что можно обойтись без двумерного массива пересечений.
Надо разложить операции на два set: операции "+" в set+ (только значения s) операции "-" в set- (только значения d) Далее идём по set+ и просто суммируем количество ячеек, которые закрывают эти операции. У меня вышли такие формулы, но не уверен (E - общая сумма закрытых ячеек): Для каждого s: E += min(n, m, s-1), если s <= max(n, m) + 1 E += max(n, m) - s + min(n, m) + 1, иначе
0
|
573 / 475 / 99
Регистрация: 05.08.2022
Сообщений: 2,598
|
|
11.09.2024, 09:33 | 7 |
Операции d - они идут "поперёк" операций s, это, конечно, подгадили знатно. Поменять бы i и j местами в разнице -вообще бы шоколад получился.
Ну ладно, раз так - то идём по set- С одной стороны, для d можно и нужно вывести аналогичные формулы "сколько ячеек какая d добавит". Но дополнительно нужно вывести формулу "соответствия d и s (через n и m)", и для каждой d искать в set+ есть ли там "соответствующий s". Если есть - то добавлять не просто E+= по формулам d, а вычитать по единице для каждого найденного "соответствия" d и s. В итоге у нас будет только 1 цикл (ну или два, тут как посмотреть) и только по количеству операций k, а циклов по n и m вовсе не будет. Но формулы для учета операций из set- мне уже выводить лень.
0
|
0 / 0 / 0
Регистрация: 25.11.2022
Сообщений: 19
|
|
11.09.2024, 17:10 [ТС] | 8 |
да, конечно могут
Добавлено через 2 минуты Ну, это решение в лоб. А они как правило неэффективны. Я поигрался с границами. Но не смог решить проблему неверного ответа Добавлено через 6 минут то есть первые формулы неверны?
0
|
573 / 475 / 99
Регистрация: 05.08.2022
Сообщений: 2,598
|
|
11.09.2024, 18:39 | 9 |
0
|
Модератор
13698 / 10902 / 6471
Регистрация: 18.12.2011
Сообщений: 29,105
|
|
11.09.2024, 18:40 | 10 |
0
|
0 / 0 / 0
Регистрация: 25.11.2022
Сообщений: 19
|
|
11.09.2024, 19:28 [ТС] | 11 |
все равно неверный выдает. 12. но я потыкал, стало выводить 6 и 8, но никак не 7.
Добавлено через 51 секунду
на ваш первый ответ. Я так понял алгоритм обломался где формулы?
0
|
Модератор
13698 / 10902 / 6471
Регистрация: 18.12.2011
Сообщений: 29,105
|
||||||
11.09.2024, 20:27 | 12 | |||||
Еще надо проверить границы 1<=j<=n, получается
0
|
0 / 0 / 0
Регистрация: 25.11.2022
Сообщений: 19
|
|
11.09.2024, 20:44 [ТС] | 13 |
0
|
28 / 18 / 11
Регистрация: 28.08.2024
Сообщений: 37
|
|
11.09.2024, 20:52 | 14 |
Artem Ka, Решил задачу на Python, могу скинуть код
1
|
0 / 0 / 0
Регистрация: 11.09.2024
Сообщений: 4
|
|
11.09.2024, 21:05 | 15 |
Whabablca, Быстрым решением?
0
|
0 / 0 / 0
Регистрация: 25.11.2022
Сообщений: 19
|
|
11.09.2024, 21:06 [ТС] | 16 |
0
|
28 / 18 / 11
Регистрация: 28.08.2024
Сообщений: 37
|
|
11.09.2024, 21:06 | 17 |
aqsdds, Да
0
|
0 / 0 / 0
Регистрация: 11.09.2024
Сообщений: 4
|
|
11.09.2024, 21:08 | 18 |
Whabablca, какая у тебя идея?
0
|
0 / 0 / 0
Регистрация: 25.11.2022
Сообщений: 19
|
|
11.09.2024, 21:09 [ТС] | 19 |
0
|
0 / 0 / 0
Регистрация: 11.09.2024
Сообщений: 4
|
|
11.09.2024, 21:10 | 20 |
Artem Ka, Есть такое
0
|
11.09.2024, 21:10 | |
11.09.2024, 21:10 | |
Помогаю со студенческими работами здесь
20
Определить, через сколько часов количество амеб достигнет 50 клеток? Найдите максимальную красоту среди красот всех клеток и количество клеток, имеющих такую красоту Определить, какое количество клеток шахматного поля не заняты и не находятся под боем Определить, какое количество клеток шахматного поля не заняты и не находятся под боем Задача "Монополия": Определите условия, при которых игрок пройдет максимальное количество клеток. Определить, какое количество клеток шахматного поля не заняты и не находятся под боем коней Убрать весь мусор с распарсеной страницы HtmlAgilityPack Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |