Привет всем!
Сегодня очередной раунд на Codeforces, вот уже 53-ый.
Раунд будет проходить для обоих дивизионов по классическим правилам формата Codeforces.
Разбалловка стандартная: 500-1000-1500-2000-2500.
В подготовке контеста участвовали Ripatti , Alex_KPR , Gerald , Aksenov239 , RAD , Delinur .
Всем удачи!
UPD. Раунд окончен.
Победители div1:
1. Petr
2. tourist
3. SergeyRogulenko
4. bmerry
5. UESTC_Nocturne
Победители div2:
1. gflegar
2. mylyanyk.ivan
3. arbesfeld
Petr — единственный в первом дивизионе, решивший все 5 задач. Во втором дивизионе 5 задач не решил никто.
UPD. Разбор задач.
беда...
давно не было
гробовыхидейных задач от Ripatti...0.0012 from 100010
What you want to say? I'm not understanding.
1/8 * 1000 = 125
Да это же юбилейный, 777 XOR 884-ый раунд!
А скоро и 128-й раунд будет... 2^7 — какой простор для фантазии :)
А что будет на рaунд 129? Он (2^7)+1 будет? :)
Судя по номеру будет математика :( UPD. Я прям Нострадамус.
be careful! 5^3 is meaning something... maybe this is hint for some tasks ))
This is an algorithmic contest Mr. Sherlock Holmes :P
Can we suppose fixed scoring, as it is not specified?
It is already specified that the points are standard ->500,1000,1500,2000,2500 .. So no dynamic scoring
但愿不坑爹
Please comment in english :)
А планируется ли в дальнейшем еще форматы с динамическим определение стоимостей задач?
Удручают такие контесты, когда ты знаешь, что писать в Е, но написать это не можешь и тупо целый час ждешь, когда контест закончится... Авторы — утонченные садисты :(.
тоже самое про С ))
Что такое знаешь, что писать но не можешь написать. Я понимаю, что такое не можешь отладить, но при этом не ждешь происходит, а некоторое активное действие все-таки.
Это значит, что я придумал нижеописанный алгоритм за час до конца контеста, но т.к. я до этого k-d дерево не писал ни разу, было очевидно, что за час я его не напишу.
За час реально написать с первого раза почти что угодно, если хорошо понимать алгоритм. Если понимать на уровне "что-то где-то слышал", то это не называется понятно что писать. В любом случае, можно
А вот зря Пашу так активно минусуют, я считаю, что в этой ветке он прав.
ИМХО, он прав, но с поправкой на то, что я ему ответил ниже. А вообще, продолжать эту оживленную дискуссию нет большого смысла — лучше я просто напишу завтра это k-d дерево, опробую его на сегодняшней Е-шке и буду рад тому, что изучил новую структуру данных :).
Ты в какой-то степени извращаешь мои слова. Я знаю, что мне нужно писать k-d дерево, т.к. оно может решить задачу "извлечь все точки на прямоугольнике" за O(sqrt(N)). Но вот на реализацию оного в первый раз у меня уйдет явно больше часа, т.к. я, грубо говоря, не слушал лекции про алгоритмы его построения и траверса, и не пытался до этого их придумать. Просто мне известна идея k-d дерева о разбиении плоскости/пространства пополам таким образом, чтобы количество точек в обоих половинах было приблизительно равным.
Можно было убить произвольное количество времени на написание D
Было бы хорошей идеей, если бы были идеи :).
Я думаю что єто самый убитый контест за последние 6 месяцев, по крайней мере Div.2!
Как решалась Е?
Присвоим каждому захвату новые координаты: X — квадрат расстояния до него, Y — его масса. Построим по этим координатам k-d дерево. Закинем наш старенький захват в очередь и выполним следующий цикл: пока очередь не пуста, запрашиваем в k-d дереве все захваты на прямоугольнике ((0, 0), (r[queue.top]^2, p[queue.top])), добавляем их все в очередь, удаляем их из k-d дерева и увеличиваем ответ. Итого имеем асимптотику O(N * sqrt(N)).
Можно за одномерным деревом отрезков (или Фенвиком). Отсортируем по расстоянию, а потом будет запрашивать у дерева по сжатым координатам захват с минимальным весом на префиксе.
Хорош) Я-то там убивался с декартовым и совпадениями x и y.(
У меня . Разобьем на корень кусков по расстоянию. Для каждого заведем сет по массе. Каждый раз надо вынуть по отрезку из сетов и пройтись по одному куску.
UPD. Сверху проще. Интересно, а это пройдет? У меня вроде укладывается в секунду локально, а на CF сервера хорошие.
У меня упало, а когда заменил векторы на массивы, то влезло за 3940.
Насколько мне сказали, предпологалось что будет заходить NlogN и аккуратный корень. Но у некоторых Nlog2 залез.
Very tough problem set .. I could not understand what problem B wanted . :(
I think that examples were clear...
I think this case will help you to understand this. Correct answer is 2.
Спасибо за контест! Было очень круто)
Для меня всё наоборот ...
UPD. А вы считаете что когда решаешь 1 задачу(Div.2) это круто?
если как я поднимаешься на 113 в рейтинге, то да, это круто!
Какой 4 тест на В див. 2?
Меня, конечно, тоже это интересует, но я думаю, что вы и сами могли бы посмотреть его.
Когда я написал тот комментарий — тестов еще не было видно.
Когда одна из пар окружностей полностью лежит между двумя другими, в этом случае не меняется цвет ( белый на черный).
Да, мне тоже так кажется. Интересно, какой пятый...
Looks like I will get more than minus 100 rating for birthday present T_T such bad luck T_T
Regardless, Happy Birthday! :)
Спасибо за контест. Классные задачи.
I'm try to solve 4 problems..., and solve only one :/
C is very annoying :) Got 9 WA's and still don't know what's wrong with my solution.
I had a WA 4 when I checked for line-circle intersection instead of segment-circle.
Ehhhhh, the same mistake here.
Может кто-то дать ссылку на паскаль (можно не самый новый) который нормально пашет и не вылетает каждые 5 минут и каждый второй запуск для системы:
винда 7, 64-разрядная...
А то виснет в любой момент. пока слово writeln набираю 2 раза перезапускаю окно. Буду ОЧЕНЬ признателен.
Переходи на C++
У меня была другая тема, в которой я просил советы насчет С++.
Акелла промахнулся.
http://freepascal.org/download.var
Спасибо
A какая-то трудная, B в 100500 раз проще. C — понятно как решать, но куча геометрического кода.
Контест несбалансированный.
Так как у меня на C осталось 11 минут, пришлось написать без кучи геометрического кода :) Не факт, что пройдет, конечно.
Хотел бы я уметь писать такое за 11 минут %)
Ага) Я не сообразил, что координаты точек касания можно не считать, действительно несложно тогда получается.
в А можно не думать и записать условие
,
это монотонно и ищется дихотомией ( отдельно обработать случай, когда k = 1 )
ага, и это вначале контеста выводить, ну ну, еще и дихотомию писать, еще чтобы потом это и упало
Ну я так и сделал в конце концов, только зачем-то поставил неправильный assert, который сработал.
А не взломал ли я такое решение тестом 2 100000 5 10 на контесте?
У меня упало, потому что я не учел, что ответ может быть n.
Вот только к концу раунда в голову пришла мысль: верно ли, что в A (Div 2) ответ всегда "0 0 n"?
Да верно
'Разложите заданное число Фибоначчи n на сумму трёх не обязательно различных чисел Фибоначчи' Это правильно, потомучто n-число Фибоначчи и 0-число Фибоначии...
C was very fun (I didn't get it though). Thanks for a good problem set!
any idea for it?
the thng was tht the entire process was totally recursive..
so if 1 value matches the sequence the rest will follow..;)
simply simulate the expt1 till u do not exceed t..
after tht both will take same number of steps....
ans is n-i+1 where i is no. of steps to reach t
P.S.: be careful not to output -ve..:P
Um, no. We were talking about division one C.
ohh....my bad..
sorryy....
In problem B in div 2, we just have to find number of circles(out of 4) which are not intersected by any other circle. Am I right ?
Please help me someone.
Yes, you're right, my young padawan.
You have to check for every circle from each pair that it lies either in smaller of the other pair or outside bigger of the other pair. Checking only intersection is not enough as you can face a situation when a circle lies between 2 others ( exactly in the ring), so the color is not changed from white to black or vicer versa).
You should find the number of circles that are not intersected by the other 'disc'. For a circle in disk 1, simply checking intersection with both circles of the other disc is not enough. For example, the 1st disc may lie entirely inside the black region of the other disc, in which case there are no circle-circle intersections, but the number of contours is 2.
Я один в А див.2 писал перебор?
Ты не один ):
Я спросил бы писал ли хоть кто-нибудь из участников Div 2 без перебора?
Их куча :-)
Окей, сумничать не получилось(
У меня ещё круче — я выводил один ноль и два числа подбирал…
Скажите, почему не работает в Б див2? Я перебираю градус и подставляю его в уравнение прямой в полярных координатах, получиную точку проверяю на положение на другой окружности. Если совпадают точки, то окружности пересекаются иначе ответ++.Таких пар окружностей 4, перебирал с точностью до 10-5
Потому что это извращение.
господа знают толк в труЪ решениях
Такой отстой. В (D Div 2) решение упало на втором тесте. И нехватало всего одного if (water <= index). Не успел исправить до конца соревнования, жаль :(
Вы так странно называете переменные! в задаче, где о воде ничего не говорится, называете переменную "water", но мне кажется, вы просто перепутали буквы "B" и "D".
Вы так странно читаете! но мне кажется, вы просто перепутали буквы "В" и "D".
А Вы, кажется, перепутали «В» и «B».
тестирование див1, не не, не слышал
У людей тормазит полигон. С ним бывает. И сейчас даже не 2 часа ночи(в Москве во всяком случае), как часто бывало в ЛКШ. Не валите все на авторов сразу :)
Да зачем оно нужно!
ребят, минусуем!
да не меня!
От этого скорость тестирования не увеличится =)
rly? okay... (
В чем подвох в задаче C в div2? Напрямую решение ложится на больших числах.
Подвох в том, что она не решается влоб.
И как его тогда решать?
не влоб, не?
Длинная арифметика будет очень долго работать! Так что подвох в том, что она идейная...
Да, циклом долго будет перебирать число (10^6)^(10^6) — примерно максимум
http://codeforces.net/contest/199/submission/1821762 мое решение, доработанное(на контесте почти решил(один символ зря поставил)) Я просто смотрел , когда после выполнения операций над первой пробой она станет больше начального количества 2 пробы(дальше смотреть нет смысла), а дальше вывел n-i)))
мне почему-то в голову не пришло :(
Несмотря на то, что мой результат на раунде вполне приличный, я ставлю за него жирный минус. B,C,E — задачи из класса "напишите то, что написано". D — хорошая, сложная, идейная задача, но почему она стоит 2к, тогда как очевидное дерево отрезков+сжатие координат+очередь в E стоит 2,5к? Еще на CF похоже окончательно укоренилась мода давать чисто реализационные структуры в качестве E. Жаль(
да вообще, С бери и пиши
Ну в С единственная нетривиальная идея — это то что можно делать бинпоиск. Это называется неравенство треугольника. Дима у нас математик, ему это очевидно. А содержательная часть задачи по написанию — это мало того что "напишите понятно какие формулы, и понятно что они сойдутся, но не потеряйте пять крайних случаев", так еще и баян, которые тестится на тимусе, а еще лучше копируется от туда готовым.
Да какие формулы? Если забить на думать, то всё, что надо — расстояние от точки до отрезка (причём концы лежат снаружи окружности) и пересечение двух окружностей, чтобы получить касательные + что-то в стиле "(atan2 — atan2) * R)".
Я это и называю написать понятно какие формулы.
мне кажется, участникам уровня фиолетовый-желтый, вполне себе задача, конечно если ее ниоткуда не копировать
Копировать свой код вроде разрешено. Скопировать чужой с тимуса не получится. Задачка. Ну стандартная мерзость за 10-ый класс геометрии. Сесть пописать формулы конечно надо, но yeputons вполне правильно сказал, что там ничего нет, кроме теоремы косинусов и определения длины дуги.
Вообще нетривиальность геометрии здесь (особенно для фиолетового уровня) заключается в том, что не нужно строить точки касания, а можно просто найти все расстояния по формулам. Кто не знаком с этой фишкой и будет строить точки касания, получит миллион случаев и скорее всего задачу не сдаст. Полезная задача на школьную геометрию + бинарные/тернарные поиски, но ей самое место в div-2 only раунде.
UPD. Для div-2 она гробом оказалась :)
Я строил точки касания и у меня ровно те же самые два случая. Другое дело, что кода больше.
Там надо хитро понимать, какую из двух касательных взять. Да и само построение касательных — для div 2 задача нетривиальная.
Можно пробовать все 4 варианта пары касательных и брать минимальный ответ.
Сделал, как написали выше — случаев не получилось :)
Идея с бинпоиском хоть и нетривиальная, но очень избитая. Сразу вспомнила свою задачу. И откуда 5 крайних случаев?)
Ну 5 я приувеличил. Но какой-то разбор там все-таки есть.
Примерно два случая: лететь напрямую или огибать круг.
Полностью поддерживаю, хотя мне раунд понравился благодаря задачам А и D.
The special hell! Если бы была задача "Отсортировать массив из 5 элементов A B C D E", то автор бы точно получил приз за лучшее решение — "B A D E D". Даже Джеки Чан с прижатыми к голове руками тихо плачет в сторонке %)
А проблемсет хороший, даже отличный:)
Зачем задачку D целых два раза решать? ;)
Я спросил, мне сказали, что одна из D — это на самом деле C, потому что по уровню больше похожа на D.
Я имел в виду, что задачи С и Е были обе сложности Д. такая вот суровая сортировка)
Пожалуйста, скажите, почему не работает это решение на В див. 2? Вроде, все логично: проверяю если какой-то из кругов не пересекается ни из одним из остальных — то добавляю его к ответу.
Одна из окружностей полностью лежит в другом кольце. То есть, она ничего не пересекает, но вырезать по ней нельзя.
Нереально быстрое тестирование и обновление рейтинга див2! Спасибо!
can you add tutorials?
tomorrow
your's tmmrw never comes..:P
Ripatti спасибо за классный контест. Жаль что слил))
Спасибо за контест, просто отличный, задачи были сложные))) Блин, в 3 задаче меня от правильного решения отделил один символ))) Бывает!
а у меня 2-ух секунд не хватило на сдачу задачи D)))
мне кажется, или формулы для див2 изменили? побольше народу вроде вышло в див1
Спасибо, хороший контест, а оценка задач дело субъективное. Для меня задачи по сложности были "CADEB", по аналогии с "BADED". Решал в порядке ABE.
Я отправляю в дорешивание задачу В div 2: http://www.codeforces.ru/contest/199/submission/1822659
На 4 тесте получаю ВА: прога выводит "4", надо вывести "2". Локально запускаю прогу на этом тесте. Выводит "2". Баг КФ?
Компилятор Delphi 2009
UPD: косяк найден. Криво скопировал тест. При копировании переходы между строк не сохраняются, и все сливается в одну строку, без пробелов.
Today is Dragon Boat Festival. Happy Dragon Boat Festival!
Also, today is Alan Mathison Turing's 100th birthday.
I can add to your wonderful list that today there is another one celebration in Saint-Petersburg called Scarlet Sails show ("Алые паруса" in Russian). It's the holiday for all school-leavers. However, that event gathers not only them, but a lot of citizens and visitors of Saint-Petersburg.
Strange !! People here vote for colors not for content .. Even I wished him in my blog and got a lot of negative votes .. Sad but truth...
The problem with your post in my opinion is: How can Turing be happy on his birthday when he has passed away many years ago ?!! So, wishing a happy birthday to him may not make that much sense.
Поделитесь пожалуйста техникой короткого кода на acmp!
К чему здесь-то этот комментарий?
Но раз спросили, то, нам мой взгляд, писать короткий код ради acmp не стоит, это не поможет вам и не научит вас решать сложные задачи. Если уж и улучшать решение уже решенной задачи — то, наверное, полезнее улучшать его по времени (к примеру, придумав более эффективный алгоритм).
Если уж и улучшать решение уже решенной задачи — то, наверное, полезнее улучшать его по времени
кстати, на acmp это как раз сейчас актуально
Кстати, решать ACMP в целом ИМХО неактуально — польза от большого количества легких задач в какой-то степени сомнительна.
Так а если у меня не получается решать тимус, например Нигматулин и Соболевы в свое время порешали асмп, а решать то надо!
Зависит от того, какие цели для себя ставить.
Например, в отборе RCC или последнем CF раунде именно скилл быстрого решения простых задач давал хорошие результаты. На ICPC, конечно, это не настолько важно.
К концу лета фиолетовым хочу стать
По опыту могу сказать вот что:
решай виртуально Див-2 контесты минут по 30 и смотри результаты. Часто столько времени хватает чтоб попасть в топ-20 и получить плюс к рейтингу.
Например, я помню, что вторым акком попал в топ-5 за 17 минут без взломов, решив три задачи.
Короткий код на вряд ли пригодиться, но если так интересно, то просто читаешь через ифстрим, выводишь через офстрим, удаляешь return 0 , место int main() main(). И т.д.
та я уже все удалял практически и оставалось еще символов 20, такое впечатление что они не пишут что-то вроде using namespace std;
Где же обещаный разбор?
Разбор у Ripatti в блоге:
Your text to link here...
Ну теперь уже точно разбор должен бы быть
Он точно есть
спасибо
Editorial ?
It seems a spell error? Winners if div1 -----> Winners of div1:
yes, thanks
0.001*log(1000)
Wut?