Привет всем!
Завтра Сегодня, в 12.00 EDT, состоится Topcoder SRM 586.
Предлагаю после контеста обсудить здесь задачи.
GL & HF
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
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 |
Привет всем!
Завтра Сегодня, в 12.00 EDT, состоится Topcoder SRM 586.
Предлагаю после контеста обсудить здесь задачи.
GL & HF
Название |
---|
Почему псто так заминусовано? Я бы вот забыл про срм, если бы не оно.
Это первая реакция сообщества на такие посты — минус не раздумывая. Затем, чем ближе к началу, тем больше плюсов от людей вроде вас. После же контеста такие посты обчычно плюсуют те, кто писал решения, спрашивал решения, читал решения.
P.S Все, кроме первого предложения — мои догадки)
По моему лучше всего смотреть на clist.by. Не забуду никогда :)
И об lunch time завтра.
Мне не удается отредактировать текст блога :-( Выкидывает на страницу с жуком.
В любом случае напоминаю, что раунд состоится уже сегодня.
UPD: Баг возникает при попытке добавить 2 одинаковых тега к посту.
Добрый день. Дайте кто-нибудь пример решения для топкодера. Спасибо заранее.
Java C++
Кстати всегда было интересно: если во время матча возникнет вопрос по условию, где его можно задать? В Admin Lobby Room все сообщения видны же всем.
Whisper to admins.
Почему в easy кроме check(y[i]) надо еще check(y[i]-1),check(y[i]+1) делать?
Вроде и этого не хватит.
Смотри тест типа
1 3 1 4 2 4
Тут рулит интервал (2,3) без концов
такой тест
0 1 0 1 0
Тест 0 2 0 2 0 2 0 оптимальное y = 1.
Может y[i] — 0.5 (или же +-1 если умножить все на 2)?
Рекомендую посмотреть на вот этот тест: 0,2,1,2
Потому что ответ не обязательно в вершине ломаной достигается. Вот тест:
0 3 -4 7 2 6
.Ну надо проверять не только концы, например, тест "1,2,1,2,1,2,1,2,1". Я удвоил координаты и проверял середины — привет integer overflow :(
Удвоить координаты, после этого проверять Y[i],Y[i]-1,Y[i]+1. Должно работать, разве нет?
Да, но середины-то естественней. Иногда надо читать ограничения в задаче :(
Середины вообще не должны помочь. Например, на тесте
-1 9 -1 9 -1 9 1 -9 1 -9 1 -9 1
середины — это 4, 6 и -4. А правильный ответ — любая точка на интервале(-1, +1)
(вроде бы ответ 12).Я нашёл такое решение на последней минуте у себя в комнате, но не успел придумать тест.
Я вот тоже сейчас придумал тест, но Илья не написал, что сортировал массив перед вычислением середин. И тоже не успел придумать в конце челленджа минуте :)
Ах нет :) и тот участник из комнаты тоже сортировал :)
Угу. А у меня не сортировал. Вообще, у нас в комнате аж 5 решений на систесте упало, надо качаться :) .
Ну конечно в посорченном массиве, где ж ещё? :) "Обычные" середины не имеют никакого физического смысла.
Я рассуждал так: если мы будем двигаться снизу вверх, то целевой функционал может меняться только при прохождении через вершины, а значит, достаточно взять - ∞, + ∞, вершины и точки из внутренности отрезков. Наиболее естественная точка из внутренности отрезка — его середина.
Может быть имелись ввиду середины в посорченном массиве
Я вообще сжал координаты, а потом в массивчик приплюсовывал отрезки, лол.
Пора бы перестать на ТопКодере писать первое что придёт в голову и подумать перед этим а нельзя ли потупее написать... (писал на 250 макс. покрытие отрезками с аккуратной обработкой на концах отрезков)
Второй раз за день 222ое место) Как 500 решается?
Можно так:
1)Посчитаем для каждой пары династий (i и j) l[i][j] и r[i][j] — насколько влево и вправо можно сдвинуть одну относительно другой, чтобы не было противоречий (считается просто с учетом сражений). Потом запускаем для l и r Флойда.
2)Посчитав l и r, на запросы отвечать легко: просто смотрим, возможно ли пересечение правления соответвующих королей.
Можно вторую стадию отдельно не делать, а просто добавить запрос-битву, как еще одну битву и тогда запускать флойда(суммарно 50 раз). Нужно смотреть нет ли отрицаельного/положительного цикла.
Great contest, interesting tasks. :-)
EDIT
By the way, can someone explain me 1000 problem DIV2? Thanks
If the length of the string is at most 26, we can build a string using each letter only once. If the length is more than 26, we should use all the letters and always put all occurrences of a letter next to each other. The answer can be calculated using dynamic programming.
Can you talk more about the DP part? Thanks.
For L <= 26:
The answer is 26*..*(26-L+1), since we have 26 letters for the first choice, 25 for the second one, etc. The minimum weight of a word is 0.
For L > 26:
First of all, we should use each letter at least once (since we could easily lower the weight using the unused letter). What to do with the remaining L — 26 choices? Actually, it doesn't matter which letter we pick for each of these choices, since, as long as all occurrences of a letter are next to each other, they contribute to weight identically. For example, if we already have AAB (for simplicity assume that A and B are the only letters in the alphabet) picking A and forming AAAB, or picking B and forming AABB adds the same weight (+1). So we have L — 26 "balls", and we need to distribute them to 26 "urns". The number of ways to do that is
C[balls+urns-1][urns-1] = C[L-26+26-1][26-1] = C[L-1][25]. Also, we can arbitrarily rearrange groups of identical letters, and the answer becomes
C[L-1][25] * 26!. The minimum weight of a word is L — 26.
You can calculate answer for second case much easier. Look:
C[L — 1][25] * 26! = (L — 1)! / (25! * (L — 1 — 25!)) * 26! = (L — 1) ! / (L — 26)! * 26 = (L — 1) * (L — 2) * ... * (L — 25) * 26;
It means, that you don't need calculate C — just use one loop.
Как решать первую задачу в Div2?
Brute Force, каждый раз добавляешь в какой-то список одного игрока, сперва в 1 команду, потом во 2, потом в 1 и так далее. Добавляешь первого не добавленного из векторов preference1 и preference2.
У меня вопрос. Я решил, но тестирование не прошло. Затем в practice я отправил тот же код, но теперь я получил ac. Как так?
Ты забыл запустить системные тесты. У тебя на 22ом тесте неправильный ответ. Для запуска системных тестов нужно зайти в меню "Practice Options" и кликнуть "Run System Test".
Editorial