The USACO 2012 February contest is available February 3 through February 6.
Контест доступен с 3 по 6 Февраля 2012 года. Участие открытое, 3 дивизиона. 3 задачи на 3 часа.
На сайте написано, что результаты будут 12 февраля, всем удачи!
№ | Пользователь | Рейтинг |
---|---|---|
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 | 157 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
The USACO 2012 February contest is available February 3 through February 6.
Контест доступен с 3 по 6 Февраля 2012 года. Участие открытое, 3 дивизиона. 3 задачи на 3 часа.
На сайте написано, что результаты будут 12 февраля, всем удачи!
Название |
---|
ok, я нашел в правилах, там линукс
Расскажите как решать задачу про веревку и про прямоугольники?(бронзовый див.)
Есть мнение, что контест ещё не закончился.
Удачи всем)
14 часов еще.
Как решать b и c в bronze div ?
Не закончилось соревнование. В 15:59 МСК ещё можно стартовать и 3 часа решать.
Спасибо
Про прямоугольники — если не ошибаюсь, дано 10 прямоугольников, найти площадь их объединения. Можно довольно просто это посчитать по формуле включений-исключений за O(N*2^N). Просто переберем все возможные подмножества прямоугольников, будем добавлять площадь пересечения прямоугольников в подмножестве к ответу с плюсом или минусом.
http://e-maxx.ru/algo/inclusion_exclusion_principle
Прямоугольники: создал массив объектов вида <x, y_down, y_up, flag>, где флаг говорит, начинается ли в этом объекте прямоугольник или заканчивается. Поместил в массив все границы прямоугольников, посортировал, и добавлял площадь пройденного куска. Сложность — (UPD) O(N^2*log(N)) — за счет подсчета суммарной высоты прямоугольников на текущий момент.
Третья: посчитаем длины s[i], пока они меньше 10^9. Теперь находим максимальный префикс s[k], меньший n, являющийся элементом последовательности, и вычитаем его длину из n. Теперь мы знаем, что дальше следуют 'm' и k+3 букв 'o'. Если n > k+4, то выкидываем k+4 символа и получаем, что n принадлежит постфиксу — т.е. тоже элементу последовательности. Решаем задачу для этого полученного n сначала =)
P.s. Кто-нибудь знает, как сделать зачеркнутый текст?
Можете показать исходник задачи про прямоугольники? O(N2) зашло бы и в silver, там N до 1000.
Вот. Но про квадрат я наврал, ввиду ограничений бронзового дивизиона там совсем не квадрат, прошу прощения, но, кажется, знаю как решить и за n^2*log(n) — нужно только изменить способ поиска суммарной высоты прямоугольников на текущем отрезке. Достаточно пробежать все открытые прямоугольники и положить их верхние/нижние границы в массив с пометкой открывающие/закрывающие, посортировать и пройти по нему, т.е. сделать по сути то же самое, что и по горизонтали.
P.s. А если поддерживать отсортированный набор с использованием set<>, то вроде бы можно и за n^2. Поправьте, если не прав.
Ну формально там квадрат — O(20000*N2) ~ O(N2) =)
Может я неправильно понял, но как с std::set может быть N2 ? Сам set ведь работает за логарифм.
Когда проходим по отсортированному массиву левых/правых границ, добавляем верхнюю/нижнюю границы в set за O(log(n)). Если закрывающую — то удаляем за то же время. При этом эти границе содержатся в отсортированном виде, и мы можем перебирать их по порядку — за О(n). Эта процедура выполняется на для каждой встреченной точки, итого имеем O(n^2). Set нужен для поддержания отсортированности массива. В принципе можно просто содержать отсортированный массив, в который добавлять/удалять за O(n), асимптотика в итоге та же, так может быть проще.
Первая silver проще сканлайна решается?
Как решалась 1 задача голда?
Единственное, что придумалось — поток минимальной стоимости, но там квадрат минимум =( Интересно услышать и про вторую задачу в голде.
поток минимальной стоимости за квадрат? Это как?
Я сначала сделал MinCost паросочетание, а далее посмотрел, как в графе выглядят минимальные по стоимости дополняющие пути. Получилась почти жадность. Я особо не доказывал, но больше ничего не придумалось.
Посоны, я один придумал сразу жадность? Она же вроде очевидна тут. Почему, кстати, "почти жадность"?
Ну, она может еще поменять что-то из предыдущего. А что за жадность?
А как здесь поток построить?
Две доли: 1)n вершин — это коровы. 2)n+k вершин — это коровы и скидки. Соединяем корову либо с ней самой с ценой P (если без скидки), либо со всеми скидками с ценой C. Нашли минимальное по цене масимальное паросочетание — это будет ответ.
Спасибо.
Вторая задача — ось симметрии либо является серединным перепендикуляром к отрезку, соединяющему первую точку с какой-то, либо является серединным перпендикуляром к отрезку, соединяющему вторую точку и какую-то и при этом проходит через первую точку, либо проходит через первую и вторую точку
и 3-ая из голда?
Общие мысли: Подвесим дерево. За O(NK) посчитаем для каждой вершины ответ для поддерева при соответствующем K. Теперь посмотрим, какие вершины мы не посчитали в ответе. Те, путь к которым пролегает через родителей. Давайте еще за O(K) для каждой вершины поднимемся на K, на каждом шаге прибавляя к ответу уже посчитанное первой динамикой число для родителя (надо еще вычесть ответ для поддерева, из которого пришли).
Я так решал — будем динамически считать ответ для всех вершин, уменьшенный на число коров в самой этой вершины для всех K. Тогда answer[i][j] = сумма по всем детям answer[i — 1][v] + cow[v] — (кол-во детей — 1) * answer[i — 2][j]. Почему это так — когда мы считаем сумму для всех детей, мы лишний раз считаем возврат в начальную вершину (но без еще лишнего возврата в саму эту вершину, поэтому -1 при множителе)
А когда будут результаты?
Results will be posted by February 12
Появились результаты.
Хотя фигня, конечно. При Колстаде уже во вторник вечером письмо с предварительными результатами было, а в четверг вечером — окончательные. А теперь неделю ждешь.