Всем привет!
Сегодня, в 19:00 MSK(через 30 минут) состоится Topcoder SRM 641.
Предлагаю обсудить задачи после контеста!
№ | Пользователь | Рейтинг |
---|---|---|
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 |
9 | nor | 153 |
Всем привет!
Сегодня, в 19:00 MSK(через 30 минут) состоится Topcoder SRM 641.
Предлагаю обсудить задачи после контеста!
Название |
---|
Is the arena down again, i've been trying for 15 min's ???
No, it's ok now
double post
This amazing moment when you see a solution below and realize that you have no idea how to generate a vector of 2.5k elements at TopCoder Arena T_T
solution
The same here :D
I used GeoGebra trying to generate a pattern that never lead to collinear but failed on that.
at a moment I thought that no test case will contains 2.5k input and brute force will pass I'm curious to know such big test cases.
I have actually managed to squeeze N^3 solution under time limit: http://pastebin.com/e6NDEj0q
but couldn't get all the bit juggling right during the contest time :)
And when you look at simplicity of Petr's solution after such efforts, it's jaw-dropping :)
в 250 див 1 реально упихать 2500 точек, чтобы все условия выполнились? просто у меня N^3 / 32 зашло.
Точки для простого p > n должны давать хорошую конфигурацию.
После контеста я написал такой генератор: берем рандомную точку, если условия выполняются для всех уже выбранных, то добавляем, иначе ищем другую. Сгенерировал тест за пару секунд =\ Код
Расскажите кто-нибудь пожалуйста как div1A решалась.
Я запихал в вектор полярные углы всех точек [0, 2*pi) и отсортировал. После перебирал пары точек p1, p2, причем p1, p2, (0,0) образуют правый поворот, если не так, то поменяем их местами. Пусть полярные углы этих точек a1 и a2, соответственно, тогда третья точка треугольника должна быть с полярным углом из интервала (a2 + pi, a1 + pi), количество таких точек получим из вектора, используя lower_bound\upper_bound. Нужно еще разобраться со случаем, когда a1 + pi >= 2 * pi. O(n2 * log(n))
Спасибо. Вроде понял,
Если треугольник ABC не содержит начала координат, то углы AOB и AOC ориентированы против часовой стрелки. Собственно, переберем точку A, найдем количество k кандидатов на точки B и C, вычтем из ответа Ck2.
Как решать Bdiv1?
Я решал так: инвертируем перестановку. Теперь нам надо из данной перестановки получить 1, 2 ... n
Если уже всё на месте — 0.
Перед тем как всё будет на месте, необходимо, чтобы в первой половине были только нечетные, во второй только четные числа, после этого решается в один ход, и это всегда будет предпоследняя конфигурация. Из другой конечную получить нельзя.
Посчитаем, сколько нечетных чисел в первой половине. Путь это будет число x. Этого числа достаточно, чтобы охарактеризовать текущее состояние. Нам надо из начального состояния x = s перейти в состояние x = n / 2. Это, например, бфс.
Как из текущего состояния найти все возможные переходы? Нужно подумать, сколько минимум и сколько максимум нечетных чисел мы можем из первой половины отправить в первую же. И сколько из второй. Сложить mn и mx для этих двух половинок. И это как раз будут состояния, достижимые из данного. Т.е. один сплошной отрезок из состояний. Где-то тут, возможно, кроется линейное решение, но я и за квадрат еле успел придумать и написать, хех.
Вот как-то так выглядит мой бфс (N в коде уже равно n / 2):
Any ideas on div1 hard?
I had an idea that is based on writing down the basic equations and then noticing that, for instance, the part that depends on the cursor can be isolated since everything is additive:
So, $f(m,i)=f(m)+d_i$, where
So $f(m)$ seems to only depend on the number of set bits in m, and can be calculated via Gauss elimination. BUT that is not quite true, because if m = 0 or m = 2n - 1, then f(m, i) = 0 and we have to adjust for that. There is probably a way to derive the adjustment (it can be separated since everything is additive) from the mask, but I couldn't find it. There is also the possibility that I went completely the wrong way about it. There are some solutions in practice room but I didn't read them thoroughly and don't know if they're correct or not.
Indeed, f(m) only depends on the number of bits set in m. The trick to deal with the bits = 0 or bits = n cases is to overcount, then remove what you overcounted.
That is, for every combination of toggles that ends in position i, you will overcount the number of moves by di. So if we know, based on the starting position, what is the probability that the last bit toggled is i (let this probability be pi), then we can calculate f(m, i) normally and subtract at the end.
Ah, that makes sense. And that probability can be calculated by noticing that the only thing that matters is whether the bit i is set, and how many other bits are set, so we can reduce the number of states to 2·n and use Gauss elimination again.
Is there a problem in Arena I can't login
There was an announcement about maintenance before it went down.
Thanks
UPD it works now
tourist has the highest rating on topcoder too after this srm .
Here's my analysis of this round: http://www.rivsoft.net/blog/srm-641/