№ | Пользователь | Рейтинг |
---|---|---|
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 |
Название |
---|
На картинке стрелочками изображено расстояние, которое нужно удвоить и добавить к ответу. Красный кружочек - это ладья человека. В данном случае это расстояние отмеченное стрелочками равно 3 и тогда x=6. Стрелки направлены именно в таком направлении, так как для такой игры человек проигрывает - это следует из того, что d[4][4]=8. Итого d[4][4]=8, поэтому общий ответ - это 8+2*3=14.
И как можно было быстро решить А? Я решал так: 2-мя бинпоисками находил отрезок минимальной высоты и длины, в который влезает и a и b. Далее сокращал высоту, переходом a в ярус, в котором сидит b. И снова находил границы, и так пока a и b не станут равны.
значение нашегомаксимальноегозначение. Понятно что это делается жадно беря самое минимальное и самое максимальное число в пару. Т.е. если я отсортирую свой список, то пару будут (1,N), (2,N-1) ... (N/2, N/2+1). Как видим изначально для каждого из первой половины сопоставлено число из второй.И если да, к какому потоку сводилась задача?
Чуть позже здесь будет краткий разбор.Я разберу :-)
1. Проведём дуги из истока к помещениям (cap = ti, cost = 0).
2. Проведём дуги из помещений в вершины-ограничители (cap = wi, cost = 0).
3. Проведём дуги из помещений и вершин ограничителей в вершины-минуты (cap = 1, cost = число_людей_в_эту_минуту_в_этом_помещении). Само собой, что дуги из помещения проводятся в минуты только если нет ограничений в эту минуту, иначе - проводятся из ограничений.
4. Проведём дуги из минут к стоку (cap = 1, cost = 0).
Поток не может быть больше чем 500 (рабочий день уборщика). Поэтому итоговая ассимптотика - O(500 * E log V) - если посчитаешь максимальное число вершин и рёбер, в ограничения попадает легко.
Остаётся только узнать, получился ли поток максимальным и аккуратно восстановить решение.
Забанили в гугле.слоновслоников.Кто как решал задачу F?
Я решал довольно таки неоптимальным способом, удаляя вершины в графе. И потом выводил количество оставшихся ребер.
Как можно было лучше решить?
P.S. Так и что, с Вашим удалением вершин прошло всё ж таки?
Не могу так сразу сказать алгоритмическую сложность...
Вот код, можете посмотреть http://pastie.org/1723488
Ну суть в том, что исходный граф постепенно сворачивается в граф из сильных компонент связности.
Потом выводится количество ребер в графе из сильных компонент связности.
А можете показать как выглядит код короткого решения?
Задача про братьев и землянику.
Зашло у кого-нибудь решение за O(N*M*N*M) на опенкапе?
У меня на онсайте где-то в 1,6-2 раза не укладывалось по времени.
Глупо, конечно, было думать в таком направлении.
Мне как сказали, что там сложность O(N*M*log K), я сразу-же придумал.
Но все-таки если у кого-то зашло, то обидно.
Я уже мог где-то в 3:20 - 3:30 отсабмитить и в самом этапе опенкапа мы заняли бы 3-е или 4-е место, а так только 7-е.
P.S. Я бы и сам проверил именно свое решение, но дорешивание лежит. :)
UPD. Уже заработало. Отправил. Не прошло. Так что никаких шансов на место повыше не было. :)
Но вопрос все равно актуален. Было бы интересно, если кто-нибудь таки запихал такое решение.