hello!
topcoder SRM 591 will take place Monday, 16 September 2013 at 21:00
Lets discuss problems here after end of the contest.
thank you all and have fun!
№ | Пользователь | Рейтинг |
---|---|---|
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 |
hello!
topcoder SRM 591 will take place Monday, 16 September 2013 at 21:00
Lets discuss problems here after end of the contest.
thank you all and have fun!
Название |
---|
It can't happen today in any timezone as there is more then 24 hours till SRM
thank you! :)
changed!
Thanx;)
topcoder is useless site!
I don't recommend it for coders!
If you only registered to write comments like this one, it'd be better if you didn't at all.
While TC has a smaller variety of problems and weird restrictions (which sometimes lead to a lot of unnecessary input parsing), and the contests are done using a fail Java arena (I've never been able to log in when using a proxy server in Slovakia), the problems are often interesting and it has other well done features on the site, like algorithm tutorials. It's still worth competing.
А как 500 то решать?
Ну мне не хватило 30 секунд на перебором сгенерировать ответ для маленьких и решить систему урвенений на коэффициенты при
n*m, n*m/g, n*m/(g*g), n, m, n/g, m/g, (n/g)%2, (m/g)%2, 1
. Оно решается и получается что-то очень простое. В practice прошло.P.S.
g = gcd(n,m)
;n
это2*n-2
исходное;m
это2*m-2
исходное. На самом деле из этого всего нужно толькоn*m/g, n*m/(g^2), n/g, m/g, 1
. Но это как-то не очевидно.А почему нужно искать зависимость именно от этих величин, а не от чего-нибудь еще?
Ничего более разумного, чем потому что нашлась сказать не смогу, если честно . Сам их выписывал из соображений того что вылазило в попытках выписать руками. В частности сначала забыл 1, и оно не хотело решаться.
Как я решал (сдал правда после контеста): Будем решать немного по-другому сформулированую задачу. Пускай есть бильярдный стол размером N-1 на M-1. Из одного из углов вылетает шар. Шар отбивается от сторон стола. Нужно определить во скольких точках с целочисельными координатами побывает шар.
Сначала найдем количество отрезков типа нижняя часть — верхняя часть. То есть, сколько раз шар пройдет путь от нижнего края к верхнему. Пускай таких отрезков X. X = НОК(N-1, M-1) / (M-1). (M < N) Тогда количество точек будет X * (M — 1) + 1 (каждый по M — 1 точке + стартовая) Теперь нужно убрать точки пересечения отрезков. Каждая из таких посчитана дважды. Найдем число Z = ceil(N / M) — сколько отрезков после вылета шар пройдет до первого пересекающегося отрезка. И запомним точку в которой он окажется. Теперь запустим цикл (пока не придумал как его превратить в формулу): На каждой отерации смотрим, если шар из данной позиции пролетит Z отрезков и при том перед ударом об боковую стенку будет лететь снизу, то отнимаем от ответа Z * номер итерации (номер итерации — это по сколько точек пересечение будет имет каждый из отрезков текущей итерации), иначе отнимием (Z — 1) * номер отерации ( так как последний раз он летел сверху перед ударом об боковую, то на последнем отрезке он пересечет количество отрезков, равное текучей итерации, иначе — уже не единицу больше — что мы и учтем на следующей итерации). И не забудем обновить текущую позицию. И так пока все отрезки не рассмотрим.
Если кто разберется, что я здесь написал, скажите, правильное ли решение (а то ТС пишет, что "Problem successfully submited for ... points", а я так и не понимаю, значить ли это АС, или же просто это успешная отправка.
UPD. Понял как на системных тестах проганять — один ТЛ, остальное — АС. То есть осталось только с циклом разобратся... code
Системный тест останавливается после первого же непройденного теста. На самом деле, оно может после него протестировать еще на паре тестов, поскольку проверяется все на кластере, но суть не меняется: если решение упало на одном тесте, то это еще далеко не факт, что все остальные оно проходит.
Понятно... Тем не менее, на том тесте оно работает правильно, но близко полторы минуты. То есть можно считать решение правильным, но долгим. Я попытался выдвинуть идею — может кто может помочь с оптимизацией того цикла (нахождением формулы).
Я могу рассказать как предполагалось её решать.
Во-первых, как уже предложил Witalia, представим задачу в виде "есть поле N x M, из угла вылетает шарик/слон и бегает, отталкиваясь от сторон; посчитать кол-во различных клеток". Опытным путем можно увидеть красивые паттерны посещаемых клеток. Например, вот какие клетки будут посещены на поле 19 x 16:
Паттерн заключается в том, что поле поделится на ромбики, полуромбики и четвертьромбики с "радиусом" равным gcd(N-1, M-1). Думаю, после этого наблюдения можно решать кучей способов. Я предлагал считать сколько у нас будет фигур каждого типа и вычитать их суммарную площадь из NM. rng_58 предложил делать ещё проще. Для иллюстрации возьмём поле 11 x 16 и пометим все клетки, чьи координаты делятся на gcd(N-1, M-1)=5:
Для вычисления ответа нам нужно посчитать, сколько всего на поле Y-ов, сколько из них мы посетим и сколько осталось X-ов.
А что в 250 за наркоманию писали? Кто трехмерную динамику, кто вообще деревья строил... она же в одну строчку решается.
Ну круто, только главное — это не красивее решить, а побыстрее сдать. Вот все и кодили то, что первое в голову приходило.
Просто удивился, что я написал первое, что в голову взбрело, а потом гляжу на участников, которые куда опытнее и сильнее меня — а там то потоки, то еще что-то...Так до систестов и думал, что у меня упадет...
could any one explain the approach of DIV2 1000 point problem. http://community.topcoder.com/stat?c=problem_statement&pm=12750 I am habitual of using topdown approach of solving dp problem and I am unable to implement it using top down. please suggest some link on similar problems where bottom up approach is efficient. Thanks in advance
Does anybody know why the first problem in div1 was 275 points? I mean, the code was short and the problem was not that hard.
I am surprised to see that people question additional 25 points for easy and do not complain about a 500-pointer solved by 19 people only :)
The easy seemed a bit trickier than an average d1-easy, so its point value was raised. It turned out the other way.
Editorial