Блог пользователя Yury_Bandarchuk

Автор Yury_Bandarchuk, 10 лет назад, По-русски

Всем привет!

Совсем скоро, 18 сентября в 19:30 MSK, состоится Codeforces Round #267 (Div. 2), автором которого являюсь я. Это мой первый раунд и я надеюсь, что не последний.

Спасибо Феде Коробейникову (Mediocrity) и Леше Вистяжу (netman) за помощь в тестировании и подготовке раунда. Также хочу выразить благодарность Геральду Агапову (Gerald) за помощь в подготовке задач, Марие Беловой (Delinur) за перевод условий на английский язык и Михаилу Мирзаянову (MikeMirzayanov) за Codeforces и Polygon.

Я надеюсь, что каждый найдет себе задачу по вкусу, а также с головой окунется в студенческую жизнь.

Разбалловка стандартная.

Удачи! =)

Поздравляем победителей!

1)potaty

2)ryu0128

3)nisshy

4)fangpanyan

5)Bredor

Разбор задач

  • Проголосовать: нравится
  • +147
  • Проголосовать: не нравится

»
10 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

Удачного старта!

»
10 лет назад, # |
  Проголосовать: нравится +29 Проголосовать: не нравится

Third Belarusian contest for last 2 months:)

»
10 лет назад, # |
Rev. 2   Проголосовать: нравится +77 Проголосовать: не нравится

Прожил две недели в общаге.

Уже считает себя крутым студентом.

А сам ест в Маке и покупает "резиновые" блинчики в магазинах с тараканами.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +12 Проголосовать: не нравится

    Юра, он такой)

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +28 Проголосовать: не нравится

    Заложил пацана.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +20 Проголосовать: не нравится

    Минутка беларусской солидарности на кодфорсес.

    • »
      »
      »
      10 лет назад, # ^ |
      Rev. 3   Проголосовать: нравится +10 Проголосовать: не нравится

      Не очень хочется начинать затяжной и бессмысленный спор, но все же "белОрусской"

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится +4 Проголосовать: не нравится

        "Не очень хочется начинать спор, но я, пожалуй, тебя публично исправлю" — норм, чё)

        А на английском правильно White Russia будет, инфа100.

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Ну, вообще-то, можно либо "белАруСкий", либо "белОруССкий", как хочешь. В данном случае Rubanenko сделал,к сожалению, орфографическую ошибку.
        З.Ы. хотя такую ошибку делают и беларусы.

        • »
          »
          »
          »
          »
          10 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Я думал, там вторая "с" от суффикса пришла :(

»
10 лет назад, # |
  Проголосовать: нравится +18 Проголосовать: не нравится

I think this time it's better to not hope for math! If you remember problem B of last contest (round #266), most of the passed solutions, failed in system testing! Also right now it has less accepts than problem C of that contest!

Good Luck!

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +9 Проголосовать: не нравится

    I liked question B even though my solution got hacked. It did not seem tough(probably because it was level B and I was expecting it to be easy) at first look but required careful observation.

»
10 лет назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится

First time participating out of competition!

»
10 лет назад, # |
  Проголосовать: нравится +21 Проголосовать: не нравится

All the best for your round, Yura!

»
10 лет назад, # |
  Проголосовать: нравится +70 Проголосовать: не нравится

netman From grey to red , your graph is awesome it gives hope =D

»
10 лет назад, # |
Rev. 3   Проголосовать: нравится +12 Проголосовать: не нравится

The time link on this blog is broken, but according to the contest schedule, the contest will be held on Sep 18th 2014 at 19:30 MSK. So it will start while the CF Training Episode 2 will be running. Therefore, I think the schedule should be changed so that people can take part in both contest and training.

»
10 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится
  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +12 Проголосовать: не нравится

    Он больше не сможет официально принимать участие в контестах div2.. Теперь последнее место снова свободно!

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится +12 Проголосовать: не нравится

      Откуда инфа?

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

      Хммм, а вдруг он див1? :D

      Но мне все же кажется, что нижнюю границу второго дива не учли при написании КФа. Хотя посмотрим, что будет :)

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится +11 Проголосовать: не нравится

        Эту нижнюю границу уже столько раз упоминали, что, мне кажется, если даже и не учли когда-то, то уже давно всё исправили.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Does "the student" also have too much biology homework?? -_-

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Удачи всем! Думаю что все напишут хорошо.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Парнишка не разу не решил во время контеста D задачу... может и я смогу стать проблемсеттером?

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +4 Проголосовать: не нравится

    Поправка: Coder Strike я не учитывал, и была таки одна решенная D.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    по мне так. составить задачу проще, чем решить чужую. Во время контеста у тебя 2 часа и кроме задачи D, у тебя есть еще A,B,C. А на составление задачи у тебя есть сколь угодно времени, и емакс под рукой.

    Да и я думаю, если Gerald пропустил задачи в раунд, то все ок.

    • »
      »
      »
      10 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      На самом деле я против него ничего не говорю. Меня наоборот его пример мотивирует. Я придумал пару задачек, но заниматься полноценной подготовкой контеста как-то лень. А увидев его, может всё таки решусь.

      P.S. При участии в div1 помимо задачи D есть только задача C.

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится +21 Проголосовать: не нравится

      составить задачу проще, чем решить чужую — научите:) Я тоже так хочу, чтобы составлять было проще, чем решать:) За это ведь еще и деньги дают:)

      Я, кстати, не понял, как емакс поможет при составлении задач. Можете сразу и этому научить:)

      А умение составлять задачи/их качество по рейтингу нельзя угадать. Вот после раунда уже можно будет сказать, насколько перспективный человек в роли автора.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

never heard about Codefocres before :)

»
10 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Following standard procedures, I have to communicate that:

This is my first round out of competition!!! :-)

I really don't feel prepared for Div 1 right now, seems like I got lucky last round...

Hope today I do a good job and build up some confidence for my first Div 1 round!!

  • »
    »
    10 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Yeah, same, my solution for E last time was apparently flawed but worked because of weak testdata.

»
10 лет назад, # |
  Проголосовать: нравится +7 Проголосовать: не нравится

Поучаствовал бы, но завтра на первую пару, а ложиться спать в 5 часов ночи после раунда и вставать в 6:45 на учебу — как-то не круто, да еще и на пять пар.

Да и одной из мотиваций нет — участие для повышения/понижения рейтинга (или просто ради строчки во вкладке профиля "Соревнования"), а другая мотивация ослаблена — взломы (div1 явно сложнее поймать на глупых ошибках в логике и коде).

Раунды в пятницу, субботу и воскресенье рулят.

P.S. Воскресенье — я не мазахист, просто в понедельник я не учусь =)

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +16 Проголосовать: не нравится

    А всю же публику КФ волнует, будешь ли ты писать это раунд или нет.

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      В моём сообщение суть не в том, участвую я или нет, а в размышлениях о том, почему я не участвую.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +12 Проголосовать: не нравится

    Мотивация — будет удобная причина пропустить одну или несколько из пяти запланированных пар:) Хотя в середине сентября для этого и причин не надо:)

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Да нет, ты что, метрология и макроэкономика — очень важные пары, прям не знаю как жить буду без них.

»
10 лет назад, # |
  Проголосовать: нравится +7 Проголосовать: не нравится

I hope that the contest can be earlier so that I needn't stay up late. (I'm from China)

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +4 Проголосовать: не нравится

    Nope, I love this time, in China, I always get up at 11:00am and go to bed at 3:00am, now I'm in very good health!

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится +2 Проголосовать: не нравится

      lol, you should see the sunrise with more frequency. It is good for your brain!

»
10 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится

wow , over 4000 registered . Hope CF doesnt crash & can fully function. Good luck & high rating to all :)

  • »
    »
    10 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Elo rating system can't provide high ratings to all ! therefore good luck to all !

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    unfortunately it crashes at the beginning of the contest, when most of the participants are submitting for problem A.. Hope that future contests will run smoothly :)

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Hope to enjoy it!

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Seems to be a good contest :D Good luck everyone ...

»
10 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

don't miss to surprise us with scoring system just before the start of the contest :D

»
10 лет назад, # |
  Проголосовать: нравится +20 Проголосовать: не нравится

10 minutes left. What about score distribution? Good Luck.

»
10 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

wow final number of registration users is x4777
Lucky Number

»
10 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

2 minutes before the contest. Still unknown score distributions.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

what about scores?

»
10 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

long queue!

»
10 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится

Worse is on a comeback! He solved the first 2 problems in 9 minutes!

»
10 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

There should be an online issue redressal system. Commenting on the problem to get clarifications from the problem setter depending upon the language of the problem. Or is there already existing?

»
10 лет назад, # |
  Проголосовать: нравится +21 Проголосовать: не нравится

Вечный холивар: нужны сказки или нет.

Мне нравятся сказки. Иногда условие в сказке выглядит логичнее, и думать в терминах сказки проще. Поэтому я предлагаю авторам следить за тем, чтобы сказки не противоречили мат.модели.

Я хочу крепко пожать руку тому гению, который придумал несимметричное отношение "быть синонимами". Как до такого вообще можно догадаться?!

И остальные сказки. Лучше было бы без них, правда.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится

    гению, который придумал несимметричное отношение "быть синонимами"

    10 мин. смотрел и непонимал, почему в первом примере ответ не "1 3"...

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

New superstar!

http://i.imgur.com/igG6Qzz.png

P.S. Nothing can change worse :D

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Как решать C?

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    ДП[количество взятых отрезков][позиция]

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    dp[i][j] — максимальная сумма заканчивающаяся в i, поделённая на j частей размера m.

    dp[i][j] = max(dp[i-m][j-1] + sum[i-m + 1] -sum[i + 1],dp[i-1][j]);

    sum[i] = a[i] + a[i + 1] + ... + a[n]

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    И тогда еще вопрос, почему неправильно k раз брать максимальный по сумме подотрезок длины m и удалять его из массива?

    • »
      »
      »
      10 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      Потому что тогда может получиться отрезок из двух частей, которые не были соседними. UPD Тест: 10 3 2 1 1 1 99 100 100 100 99 99 1

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Я это понимал, рассуждал так: значит можно было так изменить предыдущий взятый подотрезок, чтобы выполнялось данное условие

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        мой ответ: 597

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Огромное спасибо авторам за хорошие тесты!!! Контрпример:

      7 3 2
      5 0 9 0 9 0 5
      
»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Как решается D(Div 2)?

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится -13 Проголосовать: не нравится

    присваиваем каждой уникальной строке номер. Строим граф. Потом обходим дфсом и для каждого слова находим минимум.

»
10 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

In problem B, if x[i] could be zero, i'm sure there would be many hacks! Because i saw many users in my room which said while (num>0) and if num was zero, their code wouldn't work!

»
10 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Damn!! What was the tricky test case for C? My solution got hacked.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    4000 60 60 0 0 ... 0

    or

    5000 1 5000 1000000000 1000000000 ... 1000000000

    I got two hacks with these

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится +2 Проголосовать: не нравится

      This is just great. I got hacked because Python has failed me yet again. Maximum recursion depth exceeded. So cruel

»
10 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится

How to solve C?

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    dp[i][j] = max(dp[i-1][j], dp[i-m][j-1])

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    DP : dp[i][j] denotes optimal answer when we choose i m-length sub-arrays before index j+1. Also b[j] is sum of first j elements of array. Then : dp[i][j] = max(dp[i][j-1],b[j]-b[j-m]+dp[i-1][j-m]); //You either choose j-m+1...j as a sub-array or not.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

what is the hack case for D? is it about cycles?

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I guess it is about overflow.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +7 Проголосовать: не нравится

    Answer could not fit in 32-bits type.

    • »
      »
      »
      10 лет назад, # ^ |
      Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

      How come? The total input length could not exceed 5*10^5 => Answer <= Total input size.
      UPD: Thanks for explaining the test case. While the number of r's will be <= total input size, the total length of final words <= 5*10^10.

    • »
      »
      »
      10 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      Oh oh oh ... you mean in case of minimizing the R ... we pick a long string each time that the total len will be larger than 32-bits?!

      Challenge Accepted :D Nice Hacks !!

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      I've changed int to long long but unfortunately the new verdict was TL :(

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        First find the R's and Len of each string store it somewhere by an ID and work with these numbers.

        That should work!

»
10 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится

How to do C?

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    DP : dp[i][j] denotes optimal answer when we choose i m-length sub-arrays before index j+1. Also b[j] is sum of first j elements of array. Then : dp[i][j] = max(dp[i][j-1],b[j]-b[j-m]+dp[i-1][j-m]); //You either choose j-m+1...j as a sub-array or not.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

What is the approach to solve D ? I tried to solve it by dp with state st(index , no. of r , cur_len ). Will this represent a unique state or not ?

»
10 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

I love DP .... :)
Nice Problem C ... :)

»
10 лет назад, # |
  Проголосовать: нравится -7 Проголосовать: не нравится

Why my 1st is skipped despite doing only 1 submission http://mirror.codeforces.com/contest/467/my :(

»
10 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится
  • Am I the only one who did not get this sentence "Fedor may perform this operation any number of times." — appropriately!!! I thought it says, if a finds a feasible replacement b then it will do it and if later it finds more feasible replacement it will be replaced by c. In short I thought a can be replaced by any number of times by its synonyms. I didn't understand that this replacement can be recursive I mean, that synonym can also be replaced by its synonym.
  • essay : a
  • Dictionary
  • a <=> synonym_of_a_1
  • a <=> synonym_of_a_2
  • a <=> synonym_of_a_3
  • synonym_of_a_1 <=> synonym_of_synonym_of_a_1
  • I thought that sentence meant a can be replaced by any of synonym_of_a_1,synonym_of_a_2,synonym_of_a_3 but it actually meant which I obviously came to know by others that meant a can be replaced by synonym_of_a_1 and synonym_of_a_1 can be replaced by synonym_of_synonym_of_a_1!!!
»
10 лет назад, # |
  Проголосовать: нравится -14 Проголосовать: не нравится

 Why my 1st is skipped???

»
10 лет назад, # |
  Проголосовать: нравится -25 Проголосовать: не нравится

Why my 1st question is skipped?

»
10 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

How in problem C two same solution one got Accepted by c++ and other got memory limit by java?

»
10 лет назад, # |
Rev. 6   Проголосовать: нравится +5 Проголосовать: не нравится

Хотел оставить это здесь без комментариев: 7842813 7842768 7841387

но слишком плохой код (по задаче С), чтобы сообщество читало его, дабы понять возмущение. Думаю, что почти авторское решение получает ML или AC в зависимости от версии Java.

Отдельно не понятно по посылке 7833131 — здесь же ~190MB забирается...

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    UPD: да, можно сократить использование памяти, храня не всю матрицу ДП. Но получив 190МБ из 256 я бы не стал усложнять код

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Похоже что на полигоне сейчас Java 8. А не так давно была Java 6.

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        А различия между ними бывают гигантские, как в одну, так и в другую сторону. Мне кажется, что что-то криво на Codeforces настроено.

  • »
    »
    10 лет назад, # ^ |
    Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

    Решать можно с O(n) памяти. Достаточно хранить последние m + 1 слоя динамики. смотрите мое решение: 7836016.

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Смотрите мое сообщение выше. Да, можно. Только посчитав, что решение укладывается почти с полуторным запасом по памяти, зачем придумывать способ с расходом памяти O(n), когда задача написать код быстро и не усложнять его.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

How to solve D and E, could someone can teach me ? thanks.

»
10 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

How to solve D ?

  • »
    »
    10 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +5 Проголосовать: не нравится
    1. Сreate a directed graph of rules (rule = edge in graph).
    2. Find all strongly connected component.
    3. For all component find min vertex in it (minimum number of 'R' or minimum length)
    4. Compress graph in tree (component in old graph = vertex in new) and update min for all components (using DFS).
    5. For all worlds in text find vertex => find components => add min to answer
    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится +20 Проголосовать: не нравится

      realy HARD approch :|||| just sort the nodes and make dfs from sorted nodes :| look at my solution for better undrestanding

  • »
    »
    10 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +4 Проголосовать: не нравится

    I'll Try to explain my solution.

    Let's forget about the words we have for now and focus on the synonyms. Let's model the problem as a directed graph problem with vertices as the words we have in the dictionary and there is and edge from word a to word b if word a can replace word b. Each word has a cost of <Number of Rs,Length>, If the cost of some word a is smaller than the cost of some word b, then it's always better to substitute word a with word b. But Notice that word b can also be replaced by another word c for example if c has a smaller cost.

    So the first solution that comes to your mind is a simple dfs from each word to find the word with the smallest cost to be replaced with. The problem with this idea is cycles. If you started at some word and through the dfs you went back to that node again then words of this cycle can replace each other and the optimal solution is that they are replaced with the word with the smallest cost.

    Wikipedia : "A graph is said to be strongly connected if every vertex is reachable from every other vertex". So words of a certain strongly connected component here can replace each other so let's find all strongly connected components and treat them as one node with cost equal to the minimum of the costs of the node of this component.

    In our new graph there is an edge from node a to node b, if there is any edge in the old graph starting from any node in component a and ending in any node in component b. Now we are sure that in our new graph there isn't any cycles and we can run the dfs we mentioned before to get the cost of the representative node of each strongly connected component.

    Finally back to our words, The cost of a certain word is the cost of the representative node of the SCC in which this node lies.

    Note A common hack in this problem was that the answer may not fit into a 32-bit integer.

    Here is my solution 7840587, I hope you understood my explanation :)

»
10 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится

Can you check if there is some issue with "Memory Limit Exceeded"?

http://mirror.codeforces.com/contest/467/submission/7840542 — This failed on 14th test case with Memory Limit Exceeded

http://mirror.codeforces.com/contest/467/submission/7842953 — This failed on 3rd test case with same error. This is supposed to use less memory (I halved a array size) than above solution. That passed 3rd case and this failed. (I checked that both are same test case)

-Anudeep

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Couldn't one solve C with segment tree? I've almost implemented it, hadn't enough time, but don't know if such a solution would pass tests.

»
10 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

I submitted 7840896 and 7841275. The only difference between these two codes is \n character at the top of printf. Although, they give different verdicts (wrong answer on pretest 2 and wrong answer on pretest 4). How is that possible?

»
10 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

I tried to hack this problem with m=1000, as the coder stored the value in 1001 th index. But he/she declared array like a[1000]. My hacking was unsuccessful ... How did it happen ??? :(
submission link... 7839186

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    your submission link is wrong it will be 7839186

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Unlike java, which directly gives out of bounds exception, C++ silently tries to access the memory index.
    Two cases can occur:
    1. the memory access is not allocated to the current program: in this case it is SIGSEGV(e.g. allocating a[1000] and accessing 10^7th element.
    2. The memory access is allocated to current program: like allocating a[1000] and b[1000] and then accessing a[1005] could give some element of b since such small arrays are allocated mostly contiguous. So, if the memory access does not cause SIGSEGV and is not altered by an intermediate code logic, it will behave as normal (extended) part of array, and hence the program gives correct answer.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

When will the ratings be updated ???

»
10 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится

Why is my code giving Garbage on Pretest 1? Works fine on ideone and codeblocks.

http://mirror.codeforces.com/contest/467/submission/7841331

»
10 лет назад, # |
  Проголосовать: нравится -15 Проголосовать: не нравится

Мне кажется, реджадж "С" с мл 512 был бы справедлив.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    сообщение для компенсации изменения вклада (минусуем, если плюсовали предыдущее из-за согласия и наоборот). Жаль, что до сих пор нет голосования.

  • »
    »
    10 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +10 Проголосовать: не нравится

    А Вам не кажется, что если задачу пропустили с такими ограничениями, то с ней все в порядке?

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится +8 Проголосовать: не нравится

      Не кажется. Аргументирую:

      Если автор хотел увидеть решения с оптимизацией расхода памяти — тогда надо было ставить МЛ так, чтобы не проходили точно такие же решения на другом языке или другой версии. 128мб, насколько я понимаю, как раз то ограничение, которое не пропустит не оптимизированный расход памяти.

      Если автор не требовал оптимизации в ДП — тогда 512мб было бы справедливо, так как решение на Джава7 и аналогичное решение на плюсах или Джава8 получали бы одинаковые вердикты.

      Хотелось бы послушать аргументы, перебивающие вышесказанное.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Why did my solution time out on test 22..? I used top down approach with memoization.. I think my complexity is O(nk) which is the complexity of most accepted solutions..

http://mirror.codeforces.com/contest/467/submission/7840201

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    you have n*k nodes ans each node use O(n) to update so O(n^2 * k ) in total ;)

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Ohh thanks a lot.. Can you please give a hint on how to modify my solution to make it O(nk).. ?

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        From every position there is effectively only one possible transition. Either start an interval from that point, hence you need not consider the next m-1 points and skip directly to the i + m point with number of intervals formed increased by 1. Otherwise do not start an interval and hence move to next index with number of intervals remaining the same. P.S. Have a look at my solution for better understanding. :)

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I think that you did not check the exit condition when y == n+1 you should return

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Your complexity is actually O(kn^2). Number of states is kn and from each state you are doing n transitions.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I came up with another DP solution for C, but its complexity is O(N^2*K).

Here is the code: 7844088 where dp[r][k] is the maximum sum that we can obtain using k non-overlapping intervals and the last picked interval is [r-m+1,r].

It's a pretty straight forward DP solution, but it's too slow. What is the way of thinking for reducing the time complexity? I can see others used the same idea but they have O(1) per update, while I have O(N). I seriously can't grasp the other idea, especially the proof that it works. It's hard for me to visualize a DP solution and recursion. Could someone willing try to explain it like I just learned about DP?

When I'm coding a DP solution I usually feel like I'm using my intuition, rather than my deduction skills.

»
10 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится

Как решать Е быстрее чем за c огромной константой? Зашло на плюсах за 1778мс, что видимо не предполагалось авторами.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    Для каждого i найдем максимальный j=f[i], такой, что a[j] — первый элемент четверки, a[i] — последний.
    Найдем все пары одинаковых чисел, из которых можно построить оптимальные четверки. Таких пар не больше 2n, потому что невыгодно пропускать больше одного вхождения a[i], т. к. a[i] a[i] a[i] a[i] — корректная четверка.
    f[i] найдем в оффлайне. Пары сгруппируем по индексу первого элемента и будем обрабатывать их группами по возрастанию начала.
    Будем поддерживать дерево отрезков T с таким инвариантом: если обработаны все пары, с начальным индексом <= X, то T[i] равно максимальному началу из всех обработанных пар, заканчивающихся в i-й позиции.
    Обработка группы с одинаковым началом заключается в следующем:
    1) Для каждой пары [L; R] прорелаксируем f[R] максимумом на отрезке [L; R].
    2) в дереве отрезков сделаем T[R] = max(T[R], L)
    Ну а дальше ответ легко найти динамикой.

»
10 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится

Why there isn't any UPD in the blog? Editorial publishment time, Score distribution, Top 5, ...??

»
10 лет назад, # |
  Проголосовать: нравится +40 Проголосовать: не нравится

My great congratulations to Bredor! ^_^

»
10 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

467C - George and Job was a very nice problem. :)

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I solved a b c and d but because of the contest stress I didnt realize that c was actually n^3. If I realized that the code I have written in the contest was n^3 I could easily delete the for loop from the dp function. By problem d because of not using long long I couldnt become div 1 again :(

»
10 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Can the Java 7 solutions for problem C please be rejudged? Many C++ and Java 8 solutions with similar algos passed without a hitch while Java solutions using long[5002][5002] solutions failed with Memory Limit Exceed. Shouldn't the judging be impartial?

»
10 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

Waiting for Editorial?

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can someone explain to me why I'm getting TLE on 467C - George and Job with this submission 7843970.

»
10 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

Please someone help me find the bug in D. Submission — 7845185

»
10 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится

Успехи worse не могут не радовать, но может кто-нибудь объяснить, что происходит с пользователем syolo? Если заглянуть в положение, он занимает третье с конца места с одним неудачным взломом... и нулем сданных задач. Вердикт «попытка проигнорирована» — это что?

Внимание на серые цифры неудачных попыток...  Как это возможно?

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    Попытка проигнорированной бывает при перепосылке решения. Ну или если кто-то зашлет решение один-в-один, как твое.

»
10 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Editorial ?!!

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can someone help me with my solution... dont know where i am getting wrong. Already tried enough :( http://mirror.codeforces.com/contest/467/submission/7845375

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

so can anyone tell me why generating all possible sums of consecutive m pairs and choosing the top k of them won't work in c ?

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +6 Проголосовать: не нравится

    Because they may intersect and the problem states that no intersection is allowed

    1 ≤ l1 ≤ r1 < l2 ≤ r2 < ... < lk ≤ rk ≤ n
    
  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Consider the array: 0 1 1 1 0 0 where m = 3 and k = 2. You will choose the the pair (1, 3) but then you need one more pair of size 3. So this is not going to work.

»
10 лет назад, # |
  Проголосовать: нравится +79 Проголосовать: не нравится

Сегодня я понял важную вещь: сначала решать, потом бухать.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can somebody explain the other approach for D(without scc).
Many submission seems to be on the line of using priority queue with all starting nodes already pushed in it.

like this here

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +12 Проголосовать: не нравится

    Though I have solved the problem using SCC and DFS. But I have understood the greedy Solution.

    At first give some id to the string. Then if an edge is given like from A to B. Insert a reverse edge to your graph like b->a.

    Now use priority queue or just sort the nodes by their 'R' count, and string length as tie breaker.

    Then in ascending order run a BFS/DFS to cover all the ancestors of a node (lets say x) with the value of x. If you find a node is already covered ignore it ( so the complexity of running total BFS/DFS will be O(n) ). Why we will cover the ancestors with that value ? Because all of the parents can be converted to that node x and node x does have the lowest cost so far.

    And the complexity is O(nlogn + n) = O(nlogn) overall.

    Hope you have understood the solution.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Hey can anyone explain what "Fedor wants to get an essay which contains as little letters «R» (the case doesn't matter) as possible" this means in problem D? As little letter as possible means what? Can anyone explain with any of the testcase provided? thanks in advance :)

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    That means that Fedor wants to get an essay which contains minimum number of 'r' or 'R' as a character and case doesn't matter means 'r' and 'R' consider to be same :) In case 2 :

    2

    RuruRu fedya

    1

    ruruRU fedor

    we can replace RuruRu with fedor where the final essay will be fedor fedya. This essay contains only 1 R and the total length of the essay is 10.

    Hope it helps :)

»
10 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

I really enjoyed the problems, one of the best Codeforces rounds, but soon after the beginning of the round, Codeforces kept on 'Codeforces in unavailable' for more than 10 minutes. It's sad because hundreds of other coders made submissions for B while I was unable to try. It really should be avoided.

»
10 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

Can someone explain problem E

»
10 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Задача D, тест как-бы намекает что кто-то играет в доту:

3
reka greka rak
13
rek rak
rak grek
reka rak
greka reka
rak reka
rak greka
greka rak
lol rek
lol rak
lol LO
ABA BA
LOLKA rak
rak lol
»
10 лет назад, # |
  Проголосовать: нравится -9 Проголосовать: не нравится

:) Hello

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I have started participating in the contests here, yday I did 2 questions AC but here it shows only 1. Second I did, in three attempts(3rd was AC). But then how in final standings, its showing only one accepted. Even in the last contest, I submitted my sec solution i the last two minutes of the contest. There was a long queue for the judge and my solution was evaluated after the time got over and passed all cases, but wasn't counted in my solutions accepted during the contest.

M i getting wrong somewhere..? Please help!

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    check your submission history. your code for B failed on test case 15.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Actually any AC during the contest won't mean that your code is right and will pass the test cases.It just means that it have pass the pretests which might be weak.after any contest all of ACs would be rejudged by all of test cases and they might fail at that time. sorry for my poor English.

»
10 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится

When will the editorial be up?

»
10 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

I saw someone using the greedy algorithm to solve the problem E. But I don't know how to prove it. Can someone explain it?

»
10 лет назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится

Editorial please.

»
10 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

where is the editorial ??

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

where is editorial link?

»
10 лет назад, # |
Rev. 4   Проголосовать: нравится +5 Проголосовать: не нравится

Can somebody please explain what is going on with problem C for me. I keep getting out of memory error. I have resorted to copying Java 8 solution of VArtem here: 7829968, and yet I still receive out of memory error, while for him it passed. See my submission here: 9636506 . Can somebody please explain what is happening, I am going out of my mind here?!? By the way, I typically never copy someone else's solution to submit, however I only try after not being able to solve problem for month, and keep thinking about it and no matter what it is out of memory error for me!

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

where is the tutorial of this contest ?