Салют! В преддверии заключительного этапа хотелось бы понять, как решаются некоторые из задач предыдущего года. Не могли бы вы в двух словах раскрыть идею задачи A и B?
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 3993 |
2 | jiangly | 3743 |
3 | orzdevinwang | 3707 |
4 | Radewoosh | 3627 |
5 | jqdai0815 | 3620 |
6 | Benq | 3564 |
7 | Kevin114514 | 3443 |
8 | ksun48 | 3434 |
9 | Rewinding | 3397 |
10 | Um_nik | 3396 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 156 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
10 | nor | 152 |
Салют! В преддверии заключительного этапа хотелось бы понять, как решаются некоторые из задач предыдущего года. Не могли бы вы в двух словах раскрыть идею задачи A и B?
Название |
---|
Первая идея задачи A — нас интересует только 30 человек
А почему именно 30..?
Берем 10ки лучших нападающих, защитников и полузащитников. Несложно доказать, что если мы возьмем в команду кого-то не из десятки, то можно будет заменить его кем-то из десятки и улучшить ответ. Значит нас интересуют только 30 человек. На них делаем переборчик.
Идея, которую не помню/не понимаю, как доделывать, но помню, что говорили на разборе: Считаем, что отрезок длины N проходит на расстоянии N от полоски. Это ничему не мешает.
UPD: вроде доделывается, если идти слева направо и с ДО (установить на отрезке, взять число на отрезке) и искать минимальное противоречие, где противоречие это номер пересекающихся отрезков.
Вторая задача решается бин-поиском по ответу.
Вы проверку за линию будете делать? Как? Или думаете nlog^2 засунуть?
Ну вроде бы верно: считаем первоначально все дорожки отдельно в верху и в низу, затем отсортируем их концы. Каждый раз при проверке некоторого числа микроконтроллеров X добавляем в стек те начала или концы, которые указывают на микроконтроллеры с номерами <= X. Ну и за линию узнаем правильная ли эта скобочная последовательность.
Спасибо.
А как решается С?
Вроде бы динамика, минимум/максимум (они просто противоложны) значения на прямоугольнике (1,1) — (r, c). Пересчет примерно такой:
dp[i][j] = max(dp[i — 1][j] + s[i][1...j], -(-dp[i — 1][j] + s[i][1..j]), dp[i][j — 1] + s[1...i][j], -(-dp[i — 1][j] + s[1...i][j]))
(Причем, видно, что его можно упростить.)
s — префиксные суммы.
+ Надо хранить предков и флаг, нужно ли было менять в этом многоугольнике.