Всем привет!
Уже скоро, 13 октября в 19:30 MSK состоится Codeforces Round #206. Автором задач являюсь я и это мой первый раунд!
За помощь в подготовке хочется поблагодарить координатора задач Геральда Агапова (Gerald), Евгения Вихрова (gen) за тестирование задач и Марию Белову (Delinur) за перевод условий на английский язык. Отдельное спасибо Михаилу Мирзаянову (MikeMirzayanov) за замечательные системы Codeforces и Polygon.
Разбалловка стандартная в обоих дивизионах: 500-1000-1500-2000-2500.
Желаю всем удачи и очень надеюсь, что Вам понравятся задачи!
Поздравляем победителей! Особые поздравления rng_58, единственному участнику, решившему все 5 задач!
Первый дивизион:
Второй дивизион:
UPD Опубликован разбор задач.
Разбалловка задач будет объявлена близже к началу раунда. != Score distribution will be announced soon.
I would really love if authors introduce with something about them that what they like, things they are working on, what motivated them to write, how fun is it to write problems and other stuff :)
Maybe that he tell you how to solve these problems will be better.
Those are called tutorials.
Прэбэт всэм, Став лайк братуха
Why most div1 contests are either on Friday or Sunday?
New author, new type of problems! GL && HF!!!
Отлично.Новый автор.Будет интересно поучаствовать.
Блин, а у меня во время соревнования огонь олимпийский под окнами понесут... Теперь не знаю что выбрать.
Да он все равно потухнет
Однако это довольно редкое событие.
Ну да! 3 раза за неделю. Сама редкость:)
Ты не поверишь. KalugaNews.com: В Калуге погас олимпийский огонь
Ура, контест!
Hope your first round Successful.
What a D problems!
0 Accepts for D in div2
1 Accepts for D in div1
It shows that Problem D was made totally professionally by Alex_2oo8.
And it also shows that the problems were not ordered correctly — 173 accepts for E in Div1.
& What a nice and beautiful problem E(div2)!
Thanks U Alex_2oo8!
your rating graph is really impressive and motivating.. :)
Who's graph?
Me?!
i didn't replied to your comment.. i commented to the author of this post. :)
Alex_2oo8, ofc
i don't know why but : i have a feeling that it's gonna be an awesome round !
Gonna be my first CONTEST , can't wait :D
"Score distribution will be announced soon." Soon = 2 minutes before start ? :|
15 минут это еще слишком долго до начала раунда, что бы объявить разбалловку?
Как бы осталось 5 минут, а разбалловки всё ещё нет...
Зашёл в тему, чтобы написать такое же сообщение.
как бы уже есть разбаловка
Да, когда обновил страницу, она появилась и моё сообщение стало бессмысленным, увы. Как и это.
contest started, and Score distribution not yet announced. >:(
Score distribution will be announced soon. Soon means after the contest ?
Порадовала задача А, спасибо.
What is test 4 of Div1.B ?!
You Misunderstood the question :D Read it again.
what is the problem?
Adding a letter to the string is different from moving on the board. Player can jump from one grid on the board to another grid as long as the corresponding strings are the same.
same with me. 5 minutes before the contest, I realized that I was reading the question wrong :(
Oh! I read again! Thanks!;)
I looked my code many times and I couldn't find my bug. Damn it!!!
I'd guess something like:
(answer should be FIRST)
If I understand problem...Optimal way must be 1,1 2,1 and sth... so DRAW?
The players are not literally walking through the board, just building strings and verifying that they are correct. When after second move state is "ab" the player can extend it to both "aba" and "abc".
But the problem said that "both players played optimally well",so,second won't be move to right at his first step
It doesn't matter where he will "move", because he will get "ab" either way. The state in the game is just the string itself, not the way in which it was reached.
I think it's something that stops solutions (like mine, that I couldn't fix in time) that don't account for the fact that the same string can be made by multiple correct paths. Like, if you make the state of the game a position on the board, the choices are to go right or down. But since the game is played with strings, not (directly) with paths, there can be more than two valid moves from a given state. (sorry if confusing)
you can see that after the contest !!!!!
Как решать C и E div1?
в E динамика dp[построенный суффикс числа][сколько переходит в следующий разряд — от 0 до 5]. Отдельно считаем, какие суммы можно получить из 6 чисел из множества {0, 4, 7} и потом этот подсчет используем в динамике
Можно делать перебором с запоминанием: функция go(x) пытается перебрать, сколько четверок и семерок мы ставим в последний разряд, и запускается от числа (x - 7a - 4b) / 10, если это число делится на 10.
А можно из без запоминания, все равно заходит)
Надеюсь E(div2) не решается бин. поиском и мне не будет так обидно, что ушёл через час после начала.
Либо у меня кривые руки, либо бин.поиск там не подходит, ибо никто не говорил, что функция получится монотонной.
I get the feeling that systemtest on C is going to be deadly for many people :D
Yups, and in both divisions : )
Я, конечно, извиняюсь, но какое решение в B? У меня динамика по состоянию (номер диагонали, количество ашек, количество бшек, <<маска позиций, где можно оказаться с фиксированной строкой>>). Но это жесть, надо держать состояния в хешмапе, надеяться, что их мало, и так далее... Ну не задача это уровня B. Или она-таки решается проще?
Указывай дивизион хотя-бы, а то не очень понятно
Мне кажется, или красный цвет тонко намекает)
У меня ретроанализ, по состоянию мы в такой диагонали и наши строки кончаются в такой маске позиций доски. Чтобы работало быстро сначала предподсчитаем все достижимые состояния. А памяти 170 метров — 2*20*(1<<20) интов, хотя вообще там реально состояний пару миллионов.
Жесть. Кажется, контесту бы стало гораздо лучше, если переименовать задачи: C -> B, D -> E, E -> C, B -> D.
Ну можно чуть-чуть упростить. Засчет того, что граф ацикличный, можно пускать dfs вместо ретроанализа. И лениво, вместо выделять состояния.
nevermind
Вроде нас только разность волнует, храним ее в значении ДП. Если заранее клетки пронумеровать, не так все сложно получается.
Кстати, суммарное количество состояний будет не O(n2n), а O(2n), потому что сумма геометрической прогрессии по диагоналям.
Вместо состояний колово ашек и бшек можно считать динамику количество ашек минус количество бшек.
А когда обновится рейтинг?
Через несколько минут, сейчас идёт системное тестирование.
What was approach for Div 1 C? I did a n*logn*logn approach. seems like it will fail :(
I think some pre-operation can change the order to O(nlog n).
System testing in this contest is really fast :) quiet happy about it :D
Why was E E.. :)
very good system test speed
Can somebody tell a solution of C (Div. 2)? Thanks.
the solution will look like L L L . . L R . . R R R
check the solution for each possible combination of Ls and Rs
The solution for any combination =
L*(number_OF_L) + R*(number_OF_R) + (QL or QR * abs(n-2*number_OF_L)-1)
take the best
Wow, much simpler than I thought. Thanks a lot.
I spent the whole time trying to find a dp equation for it but it actually is a simple simulation question. Answer to the problem is MIN(all weights from right arm , first from left arm and rest from right arm, first and second from left and rest from right and so on until all from left arm).
Take the case when we pick first and second from left arm and rest from right arm.Here, we get the minimum when we take w1 from left, w(n-1) from right , then w2 from left arm and then w(n-2) followed by rest from the right.This will remove the 2*qr overhead from the last 2 weights in the right and so on for the rest of the cases. Hope it helps!!
You have to choose some index i (0 <= i <= n), such that the robot takes all the items <= i with the left hand, and all items > i with the right hand.
The cost of taking the items, will be l * sum of weights of items <= i + r * sum of weights of items > i. Additionally, by choosing i, the robot takes i items with the left hand and n-i items with the right hand. If he takes the same number of items with each hand, or one more with the left/right hand, it's possible to alternate taking the objects. Otherwise, the additional cost for repeatedly taking items with one of the hands will be Ql * max(0, i — (n-i) — 1) + Qr * max(0, n-i — i — 1).
If you precompute the cumulative sum of all weights in an array, you will be able to find the cost of choosing i in O(1), and you just need to find the minimum cost for 0 <= i <= n.
For both last div1 contest , this contest , problem E's score was wrong!!!
Вот это финальные тестирование! Очень много решений упало. А я с 600 места до 300 поднялся.
C 30-ого на 700 опустился:)
С 1027-го до 868)))
Did anybody notice nobody solved problem D for Div 2 (in the contest)?
And only 1 person in Div 1 solved problem D too? I think the problem setter should have put the 2 Ds in H position!
why E is so easy and B is so hard???
A x492
B x37
C x127
D x1
E x137
I think that's unfair for those who just haven't read E on time. Maybe the authors meant some complicated solution instead of 3d dynamic programming?
Oh, yeah, it's author's fail that some people didn't read E. For these people contest must be unrated, I think.
Scoring doesn't affect your ability to read all problems. No reasons for the round to be unrated even for some contestants.
I guess it was just sarcasm (or at least, nice try to be sarcastic), not an actual suggestion to make round unrated.
Then that comment is addressed to you, not wackloner.
Why do you think that it was unfair to put E problem on the place of E? All contestants were in equal condition.
I didn't suggest unrated round too.
Because it's easy. "All contestants were in equal condition" — it's not the only criterion for a nice round. We would also be in equal conditions if the results were purely random (with equal distribution for all contestants), so what?
If we do a dice roll and select our winners based on that, it's fair for everyone as everyone is in the same condition.
Yeah, it's fair — but there's no programming involved. In fact, dice games are much more popular than programming ones :D
No, it's just author's fail E is placed E.
(ok, edit: it was unfair for every contestant.)
It wasn't unfair anyway. Just little author's mistake.
Fair, unfair, I don't want to argue about words, I think anyone will agree that it was just, you know, bad.
(And sure it was definitely unfair at least for problem E — it could be solved by more people.)
C(div.2) I have passed all pre-tests, but after system testing has recieved a WA#12. I understand my solution is wrong, but can somebody explain me how to solve this problem.
4769568 Nice solution for C div2
Почему такой странный ответ на четвертый тест B div 1?
В комментариях выше есть ответ.
Я вот тоже не понял. 5 cbbbb bcbbb aacbb aaacb aaaac Ответ FIRST
Если второй игрок будет все время двигаться вправо, то получится что-то вроде "cbcbcbcbc", где b-шек явно больше
Я же сказал, что выше уже ответили. Что ж, мне совсем не сложно продублировать :)
Игра заключается не в том, что игроки делают ходы по таблице вниз или вправо, а в том, что они прибавляют к текущей строке новый символ и проверяют, что такая строка есть в таблице.
Поясню на примере теста 4. После первых двух ходов строка однозначно будет
cb
. Далее по ошибочной логике будет илиcbc
, илиcbb
, потому что на первом своём ходу второй игрок для оптимальности пойдёт в таблице вправо. А правильнее же будет сказать, что строка может быть какcba
, так иcbc
, иcbb
, потому что первый игрок может прибавить к текущей строке любой из трёх символовa, b, c
, чтобы получившаяся строка была в таблице. Естественно, он сделает строкуcba
.Я тоже не сразу понял. Смысл в том что переход по таблице отличается от добавления к строке буквы. Если у нас есть строка cb то можно добавить и букву 'с', и букву 'b', и букву 'a'. Так как строки "cba", "cbb" и "cbc" являются хорошими.
Да уж, было бы неплохо показать это в тестовом примере. Чтобы была задача на программирование, а не на то, кто найдет "подвох" в условии.
Да, это ошибка автора, что некоторые люди не способны достаточно вдумчиво читать условия. Думаю, контест должен быть нерейтинговым.
Ого, очередь решений после контеста выходит больше, чем во время :D
Very nice problem set, I really liked DIV2 E, you had to pay great care to get it right.
какое авторское решение предполагалось в Едив1?
оно будет описано в разборе
а как скоро будет разбор?
на русском постараюсь опубликовать сегодня
I really love this time for competition so let it be traditional. By the way I really love this kind of task, low size of code, big size of thinking. ;-)
Can anyone explain why this submission (problem B div 1) getting WA on 4th test case: 4776138?
My answer is "SECOND" because if both player play optimally, the string will be "cbcbcbc" and there are more 'b' than 'a' (but correct answer is "FIRST" and I don't know why). please correct me if i'm wrong?
Read the huge discussion above -- you understood the problem wrong.
Thanks for your reply :-) You're right, I did't undrestand the problem completely.
it's not a simple game on the board — it's game with strings. After each move the string is fixed not the position an the grid. So in the test 4 after second move players have string "cb" and the next move for the first player is string "cba" — this is correct string and so the final string is "cbaaaaaac"and the first player win.
Thank you for your detailed explanation, finally I understand why I'm wrong :-)
The player are not moving on the board but are actually constructing strings & checking whether they are "good". For the 4th Test case:
5
cbbbb
bcbbb
aacbb
aaacb
aaaac
.
the game continue
.
.
Finally the string is cbaaaaaac if both play optimally & hence "FIRST" wins. Hence, this is the correct answer. Hope this helps to understand the problem. I also missed this point and got a WA.
Awesome round !! # Enjoyed throughout the ride :P # Couldn't figure out where I went wrong in Problem 'C'. If anyone would wish to take time in helping me, here is the submission detail : 4776717. Author : Expecting more rounds from you.
There are one object with weight 93
if your robot use left hand, the cost will be 93*78=7254
if your robot use right hand, the cost will be 93*94=8742
the minimum cost is 7254, but your output is 0.
@tjandra : thanks a lot. My bad.
Классно получилось у rng_58 отправил задачу D на 01:59 (4777100 )
он причем единственный, кто решил D Div1
Why is my program got TLE when it's already print the output? 4774997
Задачи все понравились, спасибо за раунд. Надеюсь, что от вас он не последний. =)
И еще неплохо бы все-таки сортить задачи по сложности. =)
Wonderful round! if there were the authors of this contest, I would definitely huge them!:D
Div2 Problem D reminds me of UVa. :(
had nice time.. great contest !! :D kudos to problem setter Alex sir :)
+1 любимый автор))
"У робота есть две разные руки — левая и правая."
Очень порадовало :)
Меня в очередной раз порадовал сюжет "мама решила подарить сыну массив" :)
:)
(for those intrigued, as I was: WA on test 7)
It was trying to prevent you from that hack but didn't succeed!
А почему рейтинг не обновляется?
Просто автор не хочет меня расстраивать :)
от чего зависит время, когда обновиться рейтинг
По-моему всех интересует 2 вопроса:
1) где разбор?
2) когда обновят рейтинг?
I dont knw why I got TLE for Problem Div1 E. As per my calculation the complexity is 42*6*18*3*5000= 68040000 (approximately). Where is my assumption going wrong? http://codeforces.me/contest/354/submission/4778403
Great problemset. But I can't think of a solution for problem Div1 C / Div2 E. Any ideas please?
X is a valid GCD if for each a_i we have n_i * X <= a_i <= n_i*X + k for some numbers n_i. For each value of X we can try each possible multiple of X, and count how many elements in the array are in the range [n_i*X,n_i*X+k] by using an array d[p] = number of elements in the array less than p. We simply pick the greatest X for which all elements a_i were inside the ranges of X's multiples.
If we check every X (2<=X<=1000000) and its multiples (1 <= n_i*X <= 1000000), we make around 10^7 constant time queries. This is fast enough to pass the time limits.
Got it AC :). Very useful explanation. Thanks very much.
what is the d[p],the p means what?
The value of a number. E.g. if you have numbers 1, 1, 4, 6, than dp[0] = 1, dp[1] = 2, ..., dp[4] = 3, dp[5] = 3, dp[6] = 4.
dp[0]=0
Any hint for DIV2 D?
When will the tutorials be published?
Such an honor : ))
Quite good problem! But I think the points of B in Div 1 can be increase