Добрый день, друзья)
Предлагаем вашему вниманию уникальный Codeforces Round #126 (Div. 2). Обратите внимание, что Codeforces Round #126 (Div. 2) проводится только сегодня, и только сегодня у вас будет единственная возможность поднять рейтинг в этом соревновании (конечно, порешать задачи с этого раунда вы сможете после его окончания как виртуальный участник, но это не повлияет на рейтинг). Также для участников из первого дивизиона данный раунд будет нерейтинговым.
В подготовке раунда принимали участие студенты Саратовского Государственного университета Николай Кузнецов (NALP), Павел Холкин (HolkinPV), Игорь Кудряшов (Igor_Kudryashov) и Геральд Агапов (Gerald). Выражаем также благодарность создателю Codeforces Михаилу Мирзаянову (MikeMirzayanov) за прекрасную систему, сотруднику штаба Codeforces Марии Беловой (Delinur) за отличный перевод условий, а также Александру Куприну (Alex_KPR) за помощь при организации данного раунда.
Обращаем ваше внимание, что сегодня было решено использовать динамическую систему начисления очков (подробнее о динамической стоимости).
При этом задачи будут расположены в произвольном порядке, т.е. не по возрастанию сложности.
Желаем всем побольше правильных идей и изящных решений.
UPD. Соревнование окончено. Всем спасибо за участие, надеемся, что вы получили удовольствие от участия, а раунд не прошел без пользы. Разбор задач будет опубликован через некоторое время. Поздравляем победителей:
Я надеюсь разбалловка будет соответствующая?
Обращаем ваше внимание, что сегодня было решено использовать динамическую систему начисления очков .
Ну так. Я имею ввиду не это. Если бы по возрастанию — то C стоит больше чем А, а если не по возрастанию — непонятно как.
Вообще, формально, сложность никак не коррелирует со стоимостью задач.
Какая-нибудь А+Б на неизвестном языке проста, но её может никто не решить О_о
При чем здесь неизвестный язык, если это не SLR?
Он имеет ввиду о преимуществе некоторых языков над другими. Например в С++ есть STL, в паскале его нет.
На самом деле я писал про естественный язык.
Почти весь STL можно реализовать самому не прилагая особых усилий.
можно. Удачи
всё можно реализовать самому
Почитайте про динамическую стоимость задач.
После контеста, по балам за задачи, будет известно какая должна быть А, а какая — С.
Нашли когда давать контест! Всех с Днём Молодежи!
А ты хоть дай один контест. Спасибо авторам!
"и только сегодня у вас будет единственная возможность поднять рейтинг"
"т.е. не по возрастанию сложности."
"и сотруднику штаба Codeforces"....=))))
после такого анонса я точно уверен, что условия будут более чем понятными ^_^
Капитан Очевидность теперь и на Codeforces?
I didn't find how many problems we'll have in contest . |-(((
as usual
wow.. this is the 200th contest on codeforces(taking Div-1 Div-2 separtely) .. Kudos to the Codeforces family :) : )
"Codeforces Round #126 (Div. 2) проводится только сегодня, и только сегодня у вас будет единственная возможность поднять рейтинг в этом соревновании"
В задаче A неправильно за N*sqrt(N)?
правильно
замешательство
что тебя смущает?
То что я это не сдал, TLE 8 и все тут.
запусти свое решение в "запуске" на тесте:
2000 2000 100000 ... все запросы в точку 1000 1000
Тааак, моя штука работает за квадрат, я понял, в чем косяк.
Мне очень понравилось. Люблю задачи на строки, причем такие, где никаких особых алгоритмов не нужно, просто техникой надо владеть. Спасибо!
Мне не очень понравилось. Не люблю задачи на строки, причем такие, где надо не думать, а надо тупо реализовывать, что сказано. Не люблю, когда решение очевидно, но надо писать море кода (как, например, в С). Побольше бы идейных задач. Спасибо!
Две задачи на реализацию. Зачем? За что?
как решать Е?
Не знаю, как доказывается выпуклость функции, и на контесте я это решение не реализовал, но...
Очевидно, k5 мы можем выкинуть из аргументов функции. Единственный момент: для k3 и k4 должно выполняться равенство s — (c3 * k3 + c4 * k4) = 0 (mod c5). Заметим, что c5 у нас небольшое, так что для всех k3 (mod c5) посчитаем массив всех k4 (mod c5), таких, что указанное выше равенство выполняется. Мысленно "размотаем" эти массивы до бесконечности и загоним с их помощью тернарники.
UPD. Вот код моего решения по описанной выше идее.
Самая интересная задача. Зарплату для 4-шников можно перебрать, а дальше или решить диофантово, или тупо перебрать решение влоб, что тоже быстро, так как если решение есть, оно будет повторятся с шагом НОК(c1,c3). Единственное, что я не учел, это то, что если решения нет, то перебирать его не следует.
вы уверены, что это уложится в ТЛ?
Да, это прошло в дорешивании за 270мс, сложность получается что-то вроде S/c2*c1*c3, более строгую оценку я сейчас не могу дать. Я не сказал, но перебором я ищу только 2 оптимальных решения(с одной и другой стороны). 1830027
Можно перебирать не все решения для k3 и k5, а рассмотреть наиболее близкие к
минимуму |c3k3 - c5k5|,
крайним случаям k3 = k4, k4 = k5.
Вроде бы, можно еще решать с помощью линейного программирования, если раскрыть модули 4-мя способами, добавить соответствующие неравенства, решить 4 разные задачи и выбрать самое оптимальное решение. А кто-нибудь когда-нибудь реализовывал симплекс метод во время контеста?
c[0], c[1], c[2] — количество 3, 4, 5. нужно найти k[0], k[1], k[2]. Несколько кусков решения: 1) перебираем k[1] 2) теперь нужно научиться решать k[0] * c[0] + k[2] * c[2] = s — c[1] * k[1] это диофантово уравнение a * x + b * y = z. делим a, b, z на нод(a, b). находим решение a * x + b * y = 1, домножаем на z. мы нашли некое решение этого уравнения. чтобы получить другие нужно прибавить к x += b / (a, b), к y += — a / (a, b); запомнили разности и одно решение. вспоним о нем позже.
3) давайте-ка теперь вспомним про три неравенста: 0 <= k[0] <= k[1] <= k[2]. обозначим x за k[0] * c[0]. получаем три неравенства на x (сумма k[i] * c[i] = s, k[1] * c[1] мы знаем). они преобразуются в это (ручка + бумажка): x приладлежит [0...min(s — c[1] * k[1] — k[1] * c[2], k[1] * c[0])]. запомнили.
4) теперь вспомним про странную функцию, которую нам дали. там какие-то суммы модулей. но также abs(x) = max(x, -x). расскрываем тогда эту функцию, как максимум 4ех (и все выражаем через x = k[0] * c[0]):
f = max(s — 3 * k[1] * c[1], -(s — 3 * k[1] * c[1]), (2x + k[1] * c[1] — s), -(2x + k[1] * c[1] — s)). По сути у нас 3 функции, все линейные, одна горизонтальная. нужно найти минимум их максимума. Как это сделать? Нужно перебрать те bestx, при которых какие-то из этих линейных становятся равны. теперь все просто: перебираем три bestx, находим лежащие в упомянутом отрезке большие bestx и меньше либо равные.
а почему верно, то, что минимум будет достигаться, когда какие-то из этих функий равны?
минимум кусочно-линейной функции, которая при -inf и +inf уходит в +inf, достигается в одной из точек излома
раунды див2 пошли: учим строки
не пойму зачем давать две задачи на тупую реализацию?
Как решать E? Я пытался перебором вариантов, но ложилось либо по точности, либо по времени.
Вопрос: зачем давать две безыдейные реализации?
I dont know why I am getting the runtime error on pretest 1 for Problem D. I was getting correct answers in my system which works with EgorK's plugin. .Somebody please see my code and tell me where I was wrong
Use this link.
I changed and used BufferedReader instead of Scanner and it got accepted .. code
http://www.codeforces.com/blog/entry/4696#comment-95880
You're repeating the same bugs, with almost two similar input formats :S
You have a bad memory, Dude!
But I did not understand that comment as why it is happeneing.. Could you please explain it.
Какой-то жёсткий раунд... либо пиши много кода, либо сиди и много думай...
Смотря как код писать, у некоторых реализации достаточно короткие.
Ты же на Java пишешь, а там так классно инпут парсится. Я посабмитил три легкие задачи и обнаружил себя на первом месте)
Hm, no AC for A problem in Java? What was the idea?
I didn't solve it at the end, but my idea was to register the number of filled seats for every diagonal in a Fenwick Tree. This would give me the number of filled seats at a distance d from the preferred position in logarithmic time for every d.
With that value I can check if there is a free spot at minimum distance, and then just look for it with brute force.
This would give a O(log(n) n k) algorithm, I guess it should fit in time.
А почему меня взломали, а уведомление мне не показалось, а только в Вопросах о задачах появилось?
Компараторы спасибо, что вы есть! :)
Суперскоростное тестирование.
Ага, если б так же быстро рейтинг обновили. UPD. Обновили.
суперскоростной разбор подкачал...
Кто писал на Java — как выгляделела бы регулярка для парсинга допустим строки с объявлением функции для Scanner.useDelimiter ?
private String next() throws IOException {
Авторы, чтоб вам всю жизнь пришлось верстать под IE6. Может быть тогда вам надоест тупая реализация в задачах. Я понимаю, что это Div.2 и участникам нужна техника программирования, но не 2(!) задачи в одном раунде на скучную технику. А идейные задачи были сегодня какими-то сильно сложными, будет интересно посмотреть разбор, за них спасибо.
А сколько раундов было проведено по вашим задачам, чтобы давать указания авторам какими они должны быть?
при чем тут сколько он провел, это его мнение по поводу контеста
Никогда не понимал такой позиции: вам нельзя ругать сборную, вам нельзя опускать творчество бибера, потому что вы этого не делали. Авторы вроде как берут на себя отвественность за раунд, который они проводят, и потом будут проводить. Поэтому им лучше сейчас услышать конструктивную критику, чтобы потом раунды были лучше.
критика приветствуется :) а по сути: не все участники див2 хорошо пишут код, поэтому часто задачи А-С несложные и в целом на технику — это полезно. Если Вы быстро и четко сумели написать правильное решение, то это очень здорово, Вам респект.
В конце концов, если Вам не нравятся технические задачи, то предлагались задачи на подумать: "Кино" и "Тракторный институт", — решайте их.
задачи конечно найс, но вы перебощили со сложностью, почти никто из див1 не решил их, не думаете?
Прочитав условие кино, сразу стало понятно что гроб)
Думаем, что это удивительно. Например, ее в течение соревнования сдал пользователь с зеленым рейтингом.
Я ниже описал примерную тактику, почему ее мог сдать зеленый пользователь.
Ок, мне предлагалось две задачи на подумать. Я подумал и решил, что можно попытаться взламывать по Е, а A уже нельзя, слишком много писать ради взломов. Итого Е решило 11 человек, а A 8. Раунд для примерно 1000 участников стал, кто быстрее найдет и напишет B и отловит косяки в двух реализационных задачах. Я не спорю, идейные задачи интересные и мне хочется узнать их решение, но они не для моего уровня( и как оказалось не под силу большинству Div.2). Я не против реализационных задач, но в разумных количествах.
Аффигительный контест! Спасибо авторам за интересные задачи, надеюсь вскоре будут еще подобные контесты!!! Жаль что нехватило времени дорешать С
Спасибо за отличный контест))) Очень понравился , 2 часа на одном дыхании)))
А почему это стало в 6-м тесте по задаче С ответ 4-0, если нас устраивает любая победа и у нас "1 или 2 место, а при неоднозначности выбираем счет с наименьшей разницей"???
за счет правила про разницу очков иногда просто победы не хватает, нужна победа с крупным счетом
слово else при считывании не написал и минус)спасибо, всех с днем молодежи!
Кстати а кого выбирают если все условия приоритета одинаковые, ведь не сказано что имена команд различны!
А как бы вы определили какая команда выиграла, если бы названия были одинаковые?
Так можно было спросить у жюри, что я и сделал. Они сказали, что различны.
А почему не написали?
Спасибо за крайне быстрые систесты и пересчёт рейтинга. Всегда бы так.
Уникальный в плане количества задач на технику?
Да... Людям, не любящим думать над идейными задачами, редко улыбается такая удача, как на этом раунде.
What about constraints for problem C? I really think problems should be written more carefully.
What else do you need?
Man, I don't even see that in the statement!
There are less than 10 lines on the part "Input", are you kidding me?
Hehe, my bad. Somehow I missed that part. Should not compete after a bad last night, I guess.
Np ;)
Спасибо большое за контест!!! Задачи хорошие!!!
вопрос: почему в С нельзя всегда выводить запредельный счет, например 1000:0, как выводил я?
1828992
Потому что требуется минимальная разница между количеством забитых командой Берляндии и забитых команде Берляндии.
потому что при неоднозначном выборе нужно было вывести тот счет, в котором разница голов меньше. Поэтому иногда лучше счет 1:0, 5:3, 8:1 и другие
Спасибо, когда читал условие, пропустил эти строки.
в случае неоднозначного выбора требуется выбрать счет X:Y, при котором величина X - Y принимает наименьшее значение;
Can someone tell if the testcase 9 for problem A was 2000 2000 100000 and then 100000x 552 1028
or were there also some different chosen seats?
thanks
No. The 66668th is 551 1028. You can see my submission: 1830110
:) nice idea, thank you very much
Россия — Греция 0:1
If you understand what I mean =)
расскажите пожалуйста идею решения E.
Кажись, что одну штуку перебираем, а остальные ищем алгоритмом эвклида.
См. мой пост выше.
Did O(nklog n) worked for problem A. I wrote O(n*n*n) and got TLE. I figgured out O(nklog n) but did not have time to finish during contest. Is there a better way?
K*(N+M) may work in time.
мы старались завалить любое такое решение :) авторское имеет время
Плохо старались значит:) Думаю, что такое легче было валить ограничениями, а не тестами. Как не крути — 2*10^8 на КФ за 3 секунды работает. Мое решение зашло за полторы.
ну миллион неправильных решений не угадаешь... а ТЛ как всегда ставится с запасом, ведь уж лучше пройдет так, чем не пройдет правильное, но не очень аккуратно написанное решение.
come on! You're writing in russian and the people still giving u points?? Wow... red is a powerful color!!!
Объясните пожалуйста, почему в задаче С 10 тест
ответ 3 1 а не 2 0
меньше пропустить нужно
Наоборот, в данном тесте логика в том, что нужно больше забить.
Насколько я понял, авторы задачей С очень тонко намекали на Россию в матче с Грецией самой постановкой задачи, а также, например, этой фразой
X > Y, то есть Берляндия собирается выигрывать в этом матче;
Если это не так, то я помешался на футболе =(да можно было и вничью сыграть, так что врядли на это намекалось
Там же написано, что все совпадения случайны.
Разумеется идея задачи пришла не случайно. Я даже предлагал дать в качестве входного теста результаты матчей нашей группы) но в итоге не стали. Очень обидно за нашу сборную. Россия вперед. А раунд, надеюсь, понравился.
Лучше бы вы сделали по настоящим правилам (я про порядок критериев). Была бы задача интереснее.
p.s. А разбор ожидается?
someone could tell me how giving this input for the problem C and why?
EIYLBZCLPBGXJRT BERLAND 7:9 MWVSPZD BERLAND 4:7 MWVSPZD EIYLBZCLPBGXJRT 4:8 VRGN EIYLBZCLPBGXJRT 3:6 VRGN MWVSPZD 6:0
sorry by my english
X must be greater than y
разбор будет сегодня?
Меня одного немного смущает, что только один участник первого дивизиона смог решить все задачи предназначеные для второго дивизиона?
I think Problem C Div 2 is incomplete .. The problem only asks to find the min (X-Y) but does not specifies that X should be as less as possible.. For eg: In test case 1-> ans is 6:0 but what if I give 50:44 . I got a WA because of that
No, You are wrong: "if it is still impossible to come up with one score, you should choose the score where value Y (the number of goals Berland misses) is minimum."
Sorry .. my bad
Классный раунд был.Большое спасибо Авторам...!!!!
When will the editorial be uploaded
When will the editorials be posted?
When will the editorials be posted?
here: http://codeforces.net/blog/entry/4769 edit. fixed link
Sorry, but I asked when not where.
my bad, wrong link http://codeforces.net/blog/entry/4769
Ok, thanks man. It seems this link is not so visible as it was supposed to be.