Салют! В преддверии заключительного этапа хотелось бы понять, как решаются некоторые из задач предыдущего года. Не могли бы вы в двух словах раскрыть идею задачи A и B?
| № | Пользователь | Рейтинг |
|---|---|---|
| 1 | Benq | 3676 |
| 2 | Kevin114514 | 3659 |
| 3 | jiangly | 3640 |
| 4 | turmax | 3450 |
| 5 | tourist | 3382 |
| 6 | strapple | 3360 |
| 7 | Um_nik | 3354 |
| 8 | squareOf105 | 3348 |
| 9 | maroonrk | 3312 |
| 10 | idontwannadothis…e | 3191 |
| Страны | Города | Организации | Всё → |
| № | Пользователь | Вклад |
|---|---|---|
| 1 | Qingyu | 158 |
| 2 | nik_exists | 151 |
| 3 | maspy | 149 |
| 4 | AmShZ | 144 |
| 5 | Um_nik | 143 |
| 6 | Errichto | 139 |
| 7 | adamant | 137 |
| 8 | BledDest | 133 |
| 9 | maroonrk | 132 |
| 10 | Proof_by_QED | 131 |
Салют! В преддверии заключительного этапа хотелось бы понять, как решаются некоторые из задач предыдущего года. Не могли бы вы в двух словах раскрыть идею задачи 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 — префиксные суммы.
+ Надо хранить предков и флаг, нужно ли было менять в этом многоугольнике.