Здравствуйте!
Сегодня, 8-го апреля, состоится последний 3-й отборочный раунд VK Cup 2012. Напоминаем, что регистрация на этот раунд также необходима и завершается она за пять минут до начала.
Раунд будет рейтинговым. В раунде можно участвовать вне конкурса, для всех участников вне конкурса раунд также считается рейтинговым. Для участников вне конкурса возможно участие во втором дивизионе.
Над задачами работал разнообразный коллектив авторов как со стороны ВКонтакте, так со стороны Codeforces и Саратовского государственного университета.
Мы постарались сделать задачи сложнее, чем обычно, но все же решаемыми за положенные 2 часа. Надеемся, участие в раунде доставит вам удовольствие, а в финал пройдут сильнейшие.
Раунд пройдёт по правилам Codeforces: с распределением на комнаты, со взломами и с обычным падением стоимости задач со временем. Раунд будет рейтинговым как если вы участвуете в чемпионате, так и если вы пишете вне него.
Из всех участников первые 50 пройдут в финальный раунд, который состоится в июле в Санкт-Петербурге.
Пожалуйста, чтобы раунд для вас был еще интереснее, прочитайте условия ВСЕХ задач.
Успехов!
UPD1:
В редакции для Див. 2 будет использована динамическая сложность задач http://mirror.codeforces.com/blog/entry/4172. Задачи будут упорядочены по возрастанию предполагаемой сложности, но баллы за них будут определятся на основании доли решивших их.
UPD2
Доступен разбор: Разбор
Разбалловка стандартная?
Соревнование начнется — узнаешь.
'В редакции для Див. 2 будет использована динамическая сложность задач http://mirror.codeforces.com/blog/entry/4172. Задачи будут упорядочены по возрастанию предполагаемой сложности, но баллы за них будут определятся на основании доли решивших их'
UPD1 был добавлен много позже
И плюс I_love_Tanya_Romanova из Див. 1.
в редакции для Div. 2 опять будет только две Div.2-задачи? в прошлый раз C была сложной для стандартной С второго дивизиона, боюсь, что в этот раз все будет еще сложнее.
Which will be the score distribution for the tasks? :-? 500-1000-1500-2000-2500 ?
'In Div. 2 Edition it will be used dynamic problem costs http://mirror.codeforces.com/blog/entry/4172'
When i had posted that,the "UPD1:" wasn't posted yet :P
I know.
good luck for everyone!
English translation?
I could only get the first three pics (using google translate, nothing special: I really can't get a word of Russian). The first says: "Join here in Codeforces". The second: "You! You've got to get on the top-300". Third: "You -- on the top-50"
I can't really understand the last one. Any hint?
"Слиться" = "to fail".
Here is my translation:
I hope it'll help =)
Approximate meaning: 1)I enter Codeforces 2)Here I need to get in Top-300 2)Here I need to get in Top-50 4)When will be the round which I can fail?
You can ask me how to fail!
он наверное уже икает)
the official contestants and unofficial contestants will be divided in Div1?(a question of room)
Official and unofficial contestants will be in separate rooms.
Что случилось с таймерами на странице соревнований? В таблице и в правой части страницы таймеры расходятся.
перенос... 5 минут...
Наверное, для того, чтобы все успели зарегистрироваться и не было тонны плаксивых комментариев в стиле:
"Не хватило 5 наносекунд, чтобы зарегистрироваться :("
Все равно такие найдутся.
У меня один таймер справа сходится, а второй расходится (показывает на 5 минут меньше), потому что второй таймер — это время до окончания регистрации.
Ещё никогда не было так ссыкотно перед началом раунда...
Спокойствие... только спокойствие!
Прикольное интервью с вами.
Это такая диверсия чтобы все пропустили начало раунда?
По мне так ужасное... со стороны всегда хуже смотришься... а что за речь... ужас...
зато, теперь вы ассоцируетесь не только с орной (обкуренной) черепашкой!)
Хуже смотришься или нет, а в финал то попал :)
"Динамическая сложность задач" — это, наверное, очень опасно :))) Боюсь представить такое, точно не для Div. 2 :D
"Динамическая стоимость" все-таки больше похоже на правду :) Ну это так, придирки :)
Реквестирую обратный отсчет до раунда в правой части этой страницы.
Division 2 problem A: I wonder when the input is: 3 10 1 1 1 Answer should be -1 isn't it? Because 3.333333*3 != 10 and the problem statement said "there were b milliliters poured in total. That is, the bottle need to be emptied;" But the problem setter's answer is 3.333333
Then, I think, you should give answer with more than 6 digits after the comma. 3.3333333*3 = 9.9999999. The difference then will be 0.0000001, while allowable deviation is 0.0000005 I guess, since the answers are rounded to the nearest number with 6 digits after the comma.
Тантай уулзсандаа баяртай байна, by the way :)
Nice to meet u too :)
i think the answer is not -1 Because, actually, there is a way to seperate the 10 cola. 10/3 for every bottle. Remember, our real world is continuous! but for computer, because of the accuracy problem, we cannot express 10/3 in fraction, so the answer is 3.333333. The answer is not precise, but it doesn't mean "no solution"
I have the same doubt. I challenged with 3 5 1 2 3 with hope of the correct answer is -1, but the official solution gives 2.666667 1.666667 0.666667 Apparently, 2.666667+1.666667+0.666667 is NOT equal to 5 in maths. Computers can't do float arithmetic accurately but that's not the point here, the problem is the result is not consistent with the statement, i.e, the bottle can't be empty at the end with such/any physically feasible distribution. In fact, 11/3 is not a finite fraction, while 11/4 is.
So I think this problem is of flaw.
Мда, начало на 20 минут позже это печально:(
Расскажите как C (div 2) решать :)
Запустим DFS из всех единиц. Потом транспонируем граф и запустим из всех двоек. Если какую-то вершину можно посетить и из единиц, и из двоек, то выводим 1.
Вообще-то div.2 C != div1.A
вообще-то нет быстро исправляешь)
Это D, но спасибо :)
Извиняюсь, просто обычно C и А совпадают)
Я пробовал решать через стек с извращенствами, но додебажить не успел :-(
Я пытался через дерево отрезков, но то ли лыжи не едут, то ли я дурак :)
Думаю можно, если дерево считает число нулей на интервале(Не успел написать).
можно еще хранить минимумы на отрезке.
динамикой научился считать минимальное количество вызовов, но восстановить отрезки так и не смог.
Если я не ошибаюсь, то можно просто стеком идти слева направо. Если очередной элемент больше вершины, то кладем его в стек. Иначе вынимаем из стека элементы до тех пор, пока вершина не станет меньше. Ну и вынимая, выводим интервалы.
5
2 1 2 1 2
По вашему алгоритму вы положите на втором шаге в стек 1, хотя в стеке вообще то он уже должен был лежать. Вроде как идея в том, чтобы на ненулевых интервалах сперва найти минимум, и перед проходом по интервалу этот минимум в стек и положить. Ну и после прохода по интервалу нужно обработать то, что ещё лежит в стеке и потом его очистить.
У меня там, возможно, где-то меньше или больше перепутаны. Экспромтом не особо выходит. На одной из белорусских республиканских олимпиад была точь-в-точь такая же задача, которая решалась стеком.
UPD. У нас просто в стеке будут храниться пары — (высота, позиция начала). И когда придет единица, мы достанем двойку, положим единицу и позицию начала поставим равной одному.
Вытаскиваем 2, кладем 1, запоминая, что отрезок для 1 начался с первой позиции.
кажется все или почти все решали через стеки.
И похоже только я, дурак, решал через рекурсию с SQRT декомпозицией, для нахождения минимумов.
Не ты один, только у меня дерево отрезков -.-
ищем минимум на отрезке, увеличваем весь отрезок на столько. Запускаемся рекурсивоно от обеих частей?
Это синдром слишком умных решений, стеком за линию можно =)
Как я решал. Есть некая функция, которая запускается от отрезка [l, r]. Она находит минимальный элемент A на этом отрезке. После чего выводит A раз l r. Затем она запускается от двух отрезков [l, i — 1] и [i + 1, r], где i — индекс элемента A. Ну а минимум на отрезке я искал с помощью дерева отрезков.
Можно решать деревом отрезков. Будем идти слева направо и удалять все отрезки, началом которых могла быть текущая ячейка. Дихом перебираем правую границу. Понятно что все ячейки, который мы уменьшим на 1 должны быть больше нуля. Это и будет нашим критерием поиска. То есть ищем такое наибольшее R, min(a[L], a[L + 1], ..., a[R]) > 0 Теперь уменьшим каждое из значений на это интервале на 1. Повторяем тоже самое, пока наша левая граница не ноль. Двигаем границу вправо.
Не писал, но вроде похоже на правду=)
C (div 2) Обозначим за da[i] = a[i + 1] — a[i]. Если da[i] > 0 ставим da[i] открывающихся скобок с пометкой i + 1, если меньше нуля — da[i] закрывающихся с пометкой i. Проходимся по новому массиву со скобочками стеком, на открывающуюся скобочку пихаем её в стек, на каждую закрывающуюся выводим индекс текущей и той, что на вершине стека в ответ
Что-то задачу С решили все, кому не лень, а у меня ни одной идеи, как её решать. Поделитесь решением?
Как С решать? Пытался пропихнуть MinCostFlow, TL 7 претест.
А как её сводить к mincostflow?
Рассмотрим цепочку рёбер capacity = k, cost = 0, для каждого отрезка [l, r] — ребро r->l capacity = 1, cost = -c. Только учитывая, как её посдавали, кажется, решение там реализационно проще и наверное баян... :(
Я долго — долго кодил свой МКМФ, получил ВА 4, долго искал баг, а в конце послал е-максовский. 30мс. Впрочем, зная кто делал тесты, я не очень сильно надеюсь:)
я МКМФ писать не умею, взял е-максовский, ВА3. видимо у меня настолько кривые руки, что я не смог готовое прикрутить...
я больше никогда не буду создавать указатели на объекты внутри векторов
я больше никогда не буду создавать указатели на объекты внутри векторов
я больше никогда не буду создавать указатели на объекты внутри векторов
я больше никогда не буду создавать указатели на объекты внутри векторов
я больше никогда не буду создавать указатели на объекты внутри векторов
да, и оно все равно не прошло, TL7...
Что за указатели на объекты внутри векторов?
вот так делать нельзя
Для этого итераторы используются.
А итераторы не развалидируются при реаллокейте?
Развалидируются. Не нашел сходу пруфлинк, но уверен, что где-то читал об этом.
Ну вот и я насколько помню, там хранится внутри тупо указатель
Объекты, находящиеся в векторе, могут перемещаться в памяти при изменении размера вектора. Сам попадался :(
Зная, кто делал задачи почти уверен, что в D решение за n*k*2^k, только с оптимизом ;)
Вроде можно за (бинпоиск по диаметру) * (сложнсоть вершинного покрытия в двуольном графе из 1000 вершин).
А как граф двудольный получить? Там же могут быть и тройки вершин у которых попарные расстояния > d. Вроде получается вершинное покрытие в произвольном графе.
Надо фиксировать 2 вершины (и считать что они входят в ответ). Тогда несложно доказать что граф будет двудольный -- доли будут по разную сторону прямой проходящей через эти 2 точки.
Ну я попытался пропихать следующее: посортим все пары по расстоянию Получаем граф, нужно сделать покрытие k вершинами на как можно больше первых ребер. Дальше я толкал оптимизацию вида "отсекать по времени, а выбирать в ребре первой ту, которая лучше выглядит". Функцию "лучше выглядит" написал совсем плохую, и меня повалил 20ый претест.
Upd. Да, еще написал эвристику, которая режет размер графа до "не очень много" — алгоритм с ошибкой не более, чем 2 раза, запущенный до 2k.
Утверждается, что оно за logN * 1.6 ^ N. И это боян с РОИ-2010.
ЮграНефтеТранс ?
Именно. Тут, правда нужен довольно-таки очевидный бинпоиск, чтобы к югренефтетрансу свести.
Тем не менее почему-то у тебя все равно TL ;-) А авторское решение работает за 0.2...
Но вообще ты прав и некоторая часть задачи для кого-то должна была быть баяном.
Сразу видно твою задачку: правильное решение никак не заходит :(
Да не правда, что не заходит)
Может, ты внутри бинпоиска граф не уменьшаешь до размера K^2 ребер? :-)
UPDATE: Описанное здесь решение неверно.
Вроде бы есть решение задачи D за O(N^2 logN logR).
Сначала надо разумеется запустить бинарный поиск по ответу. На каждой итерации надо определить максимальное кол-во точек, которое можно покрыть кругом радиуса R.
Очевидно, что круг всегда можно расположить так, чтоб хотя бы две вершины лежали на его границе. Перебираем одну из этих вершин в качестве центра. Далее приклеиваем к этому центру наш круг и пытаемся его вращать. При вращении отслеживаем события: точка вошла / вышла из круга, отслеживаем кол-во точек внутри круга. Таким образом, такое вращение делается обработкой событий за O(N logN). На каждой итерации бинпоиска надо это сделать для N центров, отсюда итоговая асимптотика.
Диаметр множества != минимальный диаметр содержащего его круга.
Упс=) и правда. Значит я что-то не то решал...
Тьфу( Великолепно. Называется — "копипасьте не думая и проходите на финал"
Копипастить надо было думая...
Меня чето дернуло искать код в гугле по "min-cost max flow source code". Взял вторую ссылку, вроде то что надо. Прикрутил — чето не работает даже на сэмпле первом. Пока сидел разбирался где что не так время прошло... Только недавно заметил, надпись в описании "ALL COSTS MUST BE NON-NEGATIVE!" :)
Дейкстру или Ливита вы тоже копипастите? minCostFlow это же Дейкстра, запущенная на несколько раз.
P.S.
Я придумал решение и написал без копипаста за 13 минут.
Копипаст к слову, запрещён, кажется
Прошу прощения, я имел в виду — мой код, который я сам написал, лежит у меня на винте, и только по странной случайности полностью совпадает с кодом с сайта е-макс.ру. Оговорился, так сказать:)
MinCostFlow. Только вершины графа — не работы, а сжатое время.
Аа, я, кажется, понял. Каждая работа — это ребро из s в s+t стоимостью -c.
Именно на эту часть идеи я потратил больше часа... :(
А так — это на самом деле известная задача теории расписаний, которая почти наверняка баян.
Can anyone give some hint(s) for problem C? Thanks :)
Looks like it's mincost maxflow, what a surprise :(
MinCostFlow. Vertex is a time, and work is a edge with capacity=1 and cost=-C. We need to find minimal cost flow not greater than K. V~1000, E~1000 and you even don't need Dijkstra's algorithm with potentials.
isn't E close to comb(n,2)?
No. You not only edges corresponding to works, but also you need edges from t to t + 1.
Interesting name selection : Variable, or There and Back Again or "The Hobbit, or There and Back Again" :D
Не надо было решать B может тогда успел бы D (
А можно как-то тесты посмотреть целиком, необрезанные?
Что за массовый прям повал решений B Div 2? O_o. Задача вроде чисто на технику... :-(
да и B div1 чуть не у всех красных упала.
И главное у всех на каких-то разных тестах...
А я вот у себя багу нашел. Обидную. N на 2 умножаю, а массив с миллиона до двух не увеличил...
А 15ый, по ходу — первый большой тест.
Если после исправления пройдет, будет очень-очень обидно.
P.S. 1503947 08.04.2012 21:48:17 LeBron B — Древние берляндские иероглифы GNU C++ Полное решение 830 мс 48192 КБ Да ну его в баню...
Я вот так и не смог придумать адекватного решения, написал кучу безобразного кода, который, в итоге, упал. Не могли бы подсказать, как она решалась правильно?
Судя по-всему, в ней много подводных камней. Достаточно не рассмотреть один случай — и падение гарантировано(у меня она тоже упала).
Почему не проходит следующее решение?
Проверяем что до первой точки нужное допустимое количество букв.
Проверяем, что после последней точки допустимое количество букв.
Рассмотрим строку, которая находится между двумя точками. Её длинна — l: 2<=l && l<=11. Если это не так — тогда NO Потом в зависимости от длины строки выбираем подходящую длину для расширения предыдущего файла и остаток — длина имени следующего файла. И так проходим по всем разделённым строкам.
UPD: Черд, неверно проверил первый случай..
вместо
Все так, только надо еще, чтоб была хотя бы одна точка, а то что-то вроде "ab" после стандартного сплита пройдет все эти проверки
Problem C — Hate!
It's really similar to http://mirror.codeforces.com/problemset/problem/132/E (I think)
or http://usaco.org/index.php?page=viewproblem2&cpid=104 (although
I've read the statement. As I understand: solution = binary search by the answer + greedy. So It can be solvable without [moncost]flows.
Idea of solution is really similar.
But the problem itself, as I see, no.
D and E are too hard, and C is an old problem -- look : http://poj.org/problem?id=3680 Very unfair.
Yes, it is a bad idea to use existing tasks in general competitions.
I agree, it's not good idea to use old problems.
1) I'm sorry, but authors of the contest are all from Russia, we just did not know about task 3680 from poj.org
2) Anyway, I hope, for many participators it was not too boring problem :-)
http://www.codechef.com/NOV10/problems/OVENTIME This problem is another similar (and harder) version of problem C.
А тут есть правило про то, что если не все из топ50 поедут на онсайт, то приглашаются следующие участники?.. :(
а есть правило, что участник, занявший первое место во внеконкурса, все равно приглашается на онсайт? :(
Да, так и будет. Другой вопрос, что если участник сольется слишком поздно, то будет сложно позвать кого-то из Китая.
49 место. Я пока тыкал в статус у меня чуть сердце не остановилось
Какой-то унылый раунд получился...
Да и проходной балл на финал не впечатляет.
А мне понравился. A и B — просто приятные задачи ad-hoc, которые я написал на удивление быстро. С — минкост, который, опять же, придумался мгновенно, правда, кодился больше часа (я не сразу догадался раздвоить вершины и не понимал, в чем дело). Да, задача в каком-то смысле бородата, но аккуратная реализация все-таки требовалась. Я вообще некоторое время боялся, что это не должно заходить, потому что первая итерация Форда-Беллмана уже должна ТЛиться, а то, что изначально граф ациклический, я заметил только после конца контеста. Геом тоже ничего, вполне решаемый, но вместе с минкостом у меня на него тупо не хватило времени.
Ваня, это не геом... Это перебор :-) Ну не умею я геометрии придумывать. То жадность, то перебор, то структуры данных выходят.
То, что придумал я, было кучей сложной геометрии и абсолютно полиномиально. Что-то вроде решения со сканируещей окружностью, которая крутится вдоль одной точки на границе, как писал кто-то выше. Я еще не мог понять, почему k такое маленькое. Зря я не подумал, что задачи от бурундуков :)
Видимо "кто-то выше" это Степа Гатилов. Ему уже ответили, почему его решение не работает...
P.S. Если сдашь за полином, расскажи обязательно. Я не умею =(
Ты был прав, это оказалось полной ерундой. Я действительно решал другую задачу — удалить сколько-то точек с границы многоугольника так, чтобы минимизировать минимальную ширину (расстояние между параллельными прямыми, содержащими многоугольник). Да и то решал неправильно.
Проходной балл довольно адекватен, по-моему.
Как раз почти нет тех, кому хватило A+B.
When will be our ratings updated?
Mine is already updated.
А почему у meret попытка по 3 игнорирована?
кстати да, я отправил его решение, Accepted
Так оно сис. тесты прошло сразу, а потом убрали его...
Спасибо за контест, понравились задачи. Динамическая стоимость задач — очень хорошая тема, большое спасибо за то, что ее придумали. Теперь кратко о задачах:
А — милая задача, простая, но можно было залажать, сразу написал, все ок. Хотел поломать на ней, но когда посмотрел на неоправданно длинные коды своих соседей по комнате, стало как-то лень.
B — интересная и тоже не особо сложная задача, но с некоторым количеством подводных камней, благодаря которым она у меня благополучно упала. Подводные камни это, конечно, хорошо, но мне обидно)
C — почти сразу увидел решение с рекурсией и поиском минимума на отрезке, в основном все время решение задачи бился с непонятно откуда взявшимися багами в дереве отрезков, в итоге отдебажил и нормально сдал.
D — минут 5 втыкал, пытаясь понять, что от меня просят в задаче. Когда понял, конечно, сразу побежал писать DFS, но до транспонирования графа не додумался, решал странно и длинно, благодаря чему запутался в решении и так и не смог найти ошибку. А жаль, ведь задача тоже не особо сложная.
Е — не успел посмотреть :(
Всем привет! Спасибо авторам за очередной интересный контест. А теперь вопрос по рейтингу (непринципиально, но интересно).
На предыдущем раунде, который я писал (cdf 113 div 2) я занял 119 место и мой рейтинг был 1667.
Сегодня на Неофициальной редакции удача была благосклонна ко мне, и я занял 4-ое. Рейтинг стал 1704.
Могу ошибаться, но, как-то маловато. Помнится, за 34 место дали +67, а тут за 4 место +37. Обидно=)
Меньше участников да и ты теперь по круче :)
Зависит от "стартового" рейтинга, а не только от места. Про систему Эло не слышали?)
Слышали, но вспоминая предыдущие скачки рейтинга, появился этот вопрос. Так или иначе, не столь важно, думаю, то, что решил задачи важнее=) Спасибо за ответы!
Извините, кажется сморозил глупость...
Как же теперь динамическая система без Вас?
Михаил Расихович, найдите и удалите пожалуйста хотя бы 8 читеров!!!=)))
Ага, сейчас начнут дисквалить всех у кого код с емакса))))
Если бы копирование решения задачи 643 с олимпа или копирование минкоста с e-maxx считалось бы читерством — тогда запросто) Однако, по-видимому, не считается.
Я уже попробовал этим заняться :) (поискать читеров), но тут есть одна проблема — у многих решения по C очень похожи, но дисквалить на этом основании нельзя, т.к. у них там prewritten code + 5 строчек. Так что вся надежда на то, что кто-нибудь из 17 китайцев откажется.
Объясните нормальное решение второй.
Я записал первую строку 2 раза, построил для полученной строки соответствующую последовательность s[i]=ps[a[i]], т.е. поставил в соответствие каждому символу строки его позицию во второй строке.
Дальше нарезал на куски, по которых можно было искать (т.е. выкинул все символы первой, которых нету во второй), и искал в каждом куске максимальный по длине фрагмент вида "вверх — 1 спад — опять вверх, но не выше начала куска". Как бы у нас будет подпоследовательность до точки спада, потом в этой точке у нас разрыв второй строки и т.д. Делал все это двумя указателями.
Оно работает... но... это как-то слишком сложно для меня.
Идем последовательно по символам строки a и ищем их позиции в строке b. Если позиция текущего символа меньше позиции предыдущего — увеличиваем ее на длину строки b. Потом идем двумя указателями, чтобы разница в позициях не превосходила длину строки b.
Да, спасибо, так намного понятней)
Легко показать, что у меня то же самое в итоге, только реализация через одно место (вот эта точка спада, например — это как раз то самое увеличение на длину b).
У меня почему то задача A в Div2 валится на тесте 9, у меня на компе все ок, в тестирующей выводит -1, что за фигня? http://mirror.codeforces.com/contest/174/submission/1498429
у тебя b примерно равно 0 кажется, сравнение может быть неточным.
это b и не нужно было, убрал и все ок :(
It's one of the most thrilling match that I have played.
In the first half hour, I did really stupid things(Misunderstand the Problem A, and then make 7 wrong try), and get very inpatient. Then I found 30+ minutes pasted and my A got only 180pt, it was really desperate.
Fortunately, I came up with the solution just after reading the problem B. And for problem C, I got very sad when I found it was a very classical min-cost-max-flow problem . I have just re-installed my OS, and I haven't copy the code-library. So it costs me about 10 minutes looking for my code in TC.
And the most thrilling part is waiting the result. My rank was 67 before start testing. When my code is running, I got very intense.
Lucky, I passed 3 problems, and advanced. :)
You can always save your library in Dropbox or something like that :)
http://db.tt/xvryFeon
PD. Congrats!
I think that the tests for the task B are too weak. I resubmited my solution 2 times, whilst the first incorrect version passed: http://pastebin.com/EztLGpMY .
Counterexample:
7 7
20 1 2 3 4 5 6
10 11 1 4 5 2 6
it returns 2, whilst correct answer is 3.
Все мне на кодефорсесе нравится, кроме Рейтинга, как то странно он себя ведет, получается чем дальше тем сложнее проскочить из div2 в div1, у меня такое ощущение что сумма рейтингов остается после каждого раунда та же что и была, но тогда возникает ситуация что в div2 рейтинга становится с каждым раундом меньше, а div1 больше.
Если ты не можешь более-менее стабильно решать все задачи Div.2, зачем тебе Div.1? Просто для повышения ЧСВ?
такими темпами скоро даже стабильного решения всех задач будет не хватать для попадания в div1.
Я просмотрел вашу историю соревнований с lisang. Так вот, за все время вы ни разу не решили все 5 задач во втором дивизионе! Так зачем возмущаться-то? Почему-то обычно люди, которые решают хоть как-нибудь стабильно 4-5 задач во втором диве не ноют в ветках, а все время слышно только недовольство таких как вы: "Мы не можем выйти в первый див, а все потому, что формулы расчета рейтинга неправильные, или фаза луны не та."
Может чтобы готовиться к Финалу ICPC? ^_^
О каком финале может идти речь, если человек не может решить 5 задач во втором диве? Позориться туда ехать?
Предлагаешь отказаться? :)
Не думаю, что это удачная идея...
Я предлагаю не отказываться, а желающим — тренироваться. Просто лично мое мнение таково — если человек не решает стабильно 4-5 задач во втором диве, то он может и должен тренироваться именно там, ибо в первом диве он в лучшем случае будет решать 1, максимум 2 задачи. Как слив в первом дивизионе может помочь попасть на финал, мне не ясно.
Да, надо тренироваться с более сильными людьми. Это факт. Но, ведь получается, что и во втором диве есть довольно много сильных участников относительно таких Eugen и lisang.
Может кто-то в команде пишет только потоки да геометрию, а в Див2 он совершенно небоеспособен.
Всё-таки ICPC не КФ.
Имхо, участник, претендующий на попадание в финал, должен уметь все на более-менее хорошем уровне.
Может кто-то в команде пишет только потоки да геометрию, а в Див2 он совершенно небоеспособен. — У такой команды есть шансы попасть на финал? Это же убого, очень даже. И мне кажется, тем более, что Всё-таки ICPC не КФ, это проблемы этого конкретного человека.
В любом случае, CF — не ресурс для подготовки к ICPC. Хотите потренироваться — тренируйтесь командой где-то в другом месте. Все таки, как я понимаю, у CF два основных назначения: 1. Личные соревнования и тренировки к ним 2. Написания контестов just for fun — для тех кто испытывает драйв от этого
Пусть меня поправят и объяснят опытные участники(не высокорейтинговые, а именно опытные, хотя зачастую это совпадает), если я не прав.
Why so serious, Ваня?
Я говорил не только о себе, я говорил вообщем о системе и о используемых формулах. Более того, очень хотелось бы получить ответ от тех кто имеет какие то за/против, такой системы.
p.s. Про вклада я думаю многие уже говорили, но я вкратце скажу свое фе: я считаю не нормальным когда вклад может от -35 до +35 скакунуть от 5-7 плюсов, и наоборот.
посылка 1499207 — вердикт ВА4, хотя ответ и вывод совпадают. не мог бы кто-нибудь пожалуйста объяснить в чем может быть дело?
У тебя выводятся лишние пробелы в конце
Can somebody please give the test 22 for the task A (it would be even better to get the shorter version of it)?
Edit. Ok I found easier counterexample for my solution, no need for this test now.
Кстати, давно (начиная с первого раунда) хотел спросить: а зачем авторы во всех раундах делали такие неприлично сильные претесты? Челленджей за все 3 рауна O(1). Если это такой хак, чтобы превратить правила codeforces во что-то другое — то не проще было это напрямую сделать?
Челенджей, конечно, мало. Но вот падали люди пачками. И на раунд 2, и на раунд 3.
А что такое сильными? Например, да, мы обычно включали какой-нибудь случайный большой тест. Но "случайный большой" — не тоже самое, что "макстест" ;-) Или в сложных задачах (D,E) я старался включать пару крайних случаев... Но вроде, людей решивших D или E на обоих раундах не много.
Ну челленджи-то обычно на простых крайних случаях происходят, а в претестах все крайние случаи были покрыты. Пример: сегодняшняя B, случай "ответ равен длине первой строки". В этом месте очевидно можно набажить (двигая 2 указателя, сделав полный круг), и этот случай зачем-то был в претестах. Вот не было бы его там — можно было бы от души почелленджить, т.к. народ вполне себе на этом падал.
Просто обычно претесты не слишком отличаются от семплов, и челленджи идут гораздо активнее :)
По некоторым задачам претесты делал я... Про такие задачи могу сказать только: мало я наверное в codeforces участвую, плохо пока знаю обычаи :-)
я вообще во время контеста поверил что претесты почти равны тестам)) но ошибся. Если бы не упало много решений — то ты был бы прав Илья, но судя по — в табличке, было где разгуляться со взломами)
Господа. Я безумно извиняюсь, но... посмотрите эту посылку на задачу D div 2. там между коментариями есть код, который в определённом случае (а именно на тесте 39) выдаёт в качестве кода возврата длину строки из входных данных, которая не имеет право быть больше 400000, однако код возврата равняется 400002. Если кто-нибудь сможет объяснить почему так происходит и почему моя программа не проходит 39 тест буду очень признателен.
Почему-то eoln не срабатывал в коде. Если добавить проверку на входящие символы и переставать читать как только дойдём до первого символа не точки и не латинской буквы. Но почему eoln не проходил?
Возможно, длина строки делится на 80? Вроде был какой-то спецэффект с этим в дельфи. Возможно, в более старой версии
Ещё эта посылка ссылка. На первом претесте у меня на компьютере выдаёт: 1 1 1 1 На сервере выдаёт 0 0 1 1 Куда копать?
В эту добавил вывод промежуточных результатов и программа стала выдавать правильный ответ. Убираем вывод промежуточных результатов и ответ опять неправильный. Мистика какая-то на серверах.
Продолжаю монолог. Проблема в оптимизаторе Delphi. Если компилить в Debug режим то выдаёт всё правильно, если в release — неправильно. Надо было добавить директиву {$W+}.
So I just fixed my time out in B... By switching from cin to scanf... (and now I pass with 0.7s worst time).
Guess the big input warning was missing in the warning. I find this very strange though, cause I don't remember having issues with 10^6 inputs before. Maybe it is that all the ints are in the same line and cin uses some sort of buffer for lines? I have no idea.
But I think that making a non-bugged linear-time solution was interesting enough, The problem was fun without having to resort to scanf to optimize input time. I see no point in not using 10^5 as constraint for this problem. Also, I think that problems with 10^6 input should have at least a 3 seconds limit to compensate how it seems that at least 2 seconds are spent in i/o when using cin/something other than C instead of scanf :/
But it is
Maybe now judge machines became faster, but I remember that before even 10^5 integers were causing time limit when reading by cin>> .
IMHO, time limit for this problem is too strict. O(nlogn) looks reasonable for n=10^6. But I couldn't make it pass even with faster IO.
I got AC with O(nlgn) complexity here:1504207
Same thing happens to me ... tle for using cin ... may b psetter should b little more responsible to give warning in such kind of huge input limit .
It's common knowledge that in order to use cin for big inputs you have to use: ios_base::sync_with_stdio(0); This 1505453 is your submission with this line added.
The limit of 10^6 is entirely normal for such a problem. Maybe it was also meant to rule out slow O(n log n) solutions.
And what is the point to rule out O(n log n)? I actually have a hard time thinking of a problem in which banning logarithmic factors actually made the problem more interesting rather than more annoying. (This effort to add artificial difficulty to B seems strange considering how they left a standard Max Flow problem in C).
If they want to enforce scanf or esoteric common knowledge, that's fine but they should at least include the usual warning about that.
That is a more philosophical discussion (and, for example, problems on TopCoder are much different in this regard from ACM or CF). I believe that authors may choose to require a faster (asymptotically or practically) solution from the participants if they believe that it is important for the problem. In fact, time limits are often chosen so as to rule out programs with too high a constant (time limits on CF are actually quite loose most of the time, but make sure to visit CodeChef for some really painful series of TLEs ;) ). That being said, differentiating between O(n) and O(n log n) is very hard, because an nlogn solution with a FastIO implementation (own i/o parsing, much faster than scanf) often runs faster than a vanilla O(n) implementation. But there usually is a real difference between O(n log^2 n) and O(n log n).
Thanks for the common knowledge anyway. It is amazing but this makes cin faster than scanf (makes sense seeing how it does the "%d" part in compile time). I guess the issue is that you cannot use scanf anymore, not going to miss it.
Уважаемые организаторы, насколько я знаю, на многих чемпионатах в случае отказа от поездки на финал, на финал пригалашаются следующие за ними участниками. Будет ли такое на VK Cup?
http://mirror.codeforces.com/blog/entry/4302#comment-87479
Спасибо. Простите, писал с мобильника и перерывать все комментарии было не с руки.
Почти на всех VK раундах такие задачи, даже из числа простых, что читаешь и думаешь — вот же чушь за уши притянутая, а потом получается — вот же красивая задача! Вобщем, сегодняшние задачи очень понравились!
Ok, so now how do we get our T-shirts? XD
VK Cup Round 3 participants can be divided into 3 groups:
1) "When our ratings will be updated?"
2) "Ok, so now how do we get our T-shirts?"
3) "When we will get our tickets to final?"
:)
I guess there should have the fourth group
4) If some competitors above us are unable to go to finals, can we get replaced?
Do we have official responses to our questions now?
When should we expect the editorial?
I wonder that who take charge of this contest. Who is the administrator that we can talk to?
There is an "in case of any questions" e-mail address in the finalist form.
Question to needing-visa finalists: Has any of you received invitation letter yet?
Почему сейчас я не могу послать решение? Задача А
Выскакивает вот это http://savepic.org/3164790.png
Вроде бы у всех сейчас так.
Никто ничего не сдавал с ночи
Does there any dp solution exist of problem C (Machine Programming) for small constraints? Someone please give hints for dp solution.
https://mirror.codeforces.com/contest/164/submission/78511593
plz check what's wrong in code. plz help to find out logical error.