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

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

Добрый день, друзья)

Предлагаем вашему вниманию уникальный Codeforces Round #126 (Div. 2). Обратите внимание, что Codeforces Round #126 (Div. 2) проводится только сегодня, и только сегодня у вас будет единственная возможность поднять рейтинг в этом соревновании (конечно, порешать задачи с этого раунда вы сможете после его окончания как виртуальный участник, но это не повлияет на рейтинг). Также для участников из первого дивизиона данный раунд будет нерейтинговым.

В подготовке раунда принимали участие студенты Саратовского Государственного университета Николай Кузнецов (NALP), Павел Холкин (HolkinPV), Игорь Кудряшов (Igor_Kudryashov) и Геральд Агапов (Gerald). Выражаем также благодарность создателю Codeforces Михаилу Мирзаянову (MikeMirzayanov) за прекрасную систему, сотруднику штаба Codeforces Марии Беловой (Delinur) за отличный перевод условий, а также Александру Куприну (Alex_KPR) за помощь при организации данного раунда.

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

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

Желаем всем побольше правильных идей и изящных решений.

UPD. Соревнование окончено. Всем спасибо за участие, надеемся, что вы получили удовольствие от участия, а раунд не прошел без пользы. Разбор задач будет опубликован через некоторое время. Поздравляем победителей:

  1. Andreos

  2. jma127

  3. iensen

  4. Spider-man

  5. MrPapaya

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

»
14 лет назад, скрыть # |
Rev. 3  
Проголосовать: нравится -35 Проголосовать: не нравится

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

Я надеюсь разбалловка будет соответствующая?

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -54 Проголосовать: не нравится

Нашли когда давать контест! Всех с Днём Молодежи!

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

"и только сегодня у вас будет единственная возможность поднять рейтинг"

"т.е. не по возрастанию сложности."

"и сотруднику штаба Codeforces"....=))))

после такого анонса я точно уверен, что условия будут более чем понятными ^_^

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -21 Проголосовать: не нравится

Капитан Очевидность теперь и на Codeforces?

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

I didn't find how many problems we'll have in contest . |-(((

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -33 Проголосовать: не нравится

wow.. this is the 200th contest on codeforces(taking Div-1 Div-2 separtely) .. Kudos to the Codeforces family :) : )

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

"Codeforces Round #126 (Div. 2) проводится только сегодня, и только сегодня у вас будет единственная возможность поднять рейтинг в этом соревновании"

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

В задаче A неправильно за N*sqrt(N)?

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -23 Проголосовать: не нравится

Мне очень понравилось. Люблю задачи на строки, причем такие, где никаких особых алгоритмов не нужно, просто техникой надо владеть. Спасибо!

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

    Мне не очень понравилось. Не люблю задачи на строки, причем такие, где надо не думать, а надо тупо реализовывать, что сказано. Не люблю, когда решение очевидно, но надо писать море кода (как, например, в С). Побольше бы идейных задач. Спасибо!

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

    Две задачи на реализацию. Зачем? За что?

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

как решать Е?

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

    Не знаю, как доказывается выпуклость функции, и на контесте я это решение не реализовал, но...

    Очевидно, k5 мы можем выкинуть из аргументов функции. Единственный момент: для k3 и k4 должно выполняться равенство s — (c3 * k3 + c4 * k4) = 0 (mod c5). Заметим, что c5 у нас небольшое, так что для всех k3 (mod c5) посчитаем массив всех k4 (mod c5), таких, что указанное выше равенство выполняется. Мысленно "размотаем" эти массивы до бесконечности и загоним с их помощью тернарники.

    UPD. Вот код моего решения по описанной выше идее.

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

    Самая интересная задача. Зарплату для 4-шников можно перебрать, а дальше или решить диофантово, или тупо перебрать решение влоб, что тоже быстро, так как если решение есть, оно будет повторятся с шагом НОК(c1,c3). Единственное, что я не учел, это то, что если решения нет, то перебирать его не следует.

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

      вы уверены, что это уложится в ТЛ?

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

        Да, это прошло в дорешивании за 270мс, сложность получается что-то вроде S/c2*c1*c3, более строгую оценку я сейчас не могу дать. Я не сказал, но перебором я ищу только 2 оптимальных решения(с одной и другой стороны). 1830027

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

      Можно перебирать не все решения для k3 и k5, а рассмотреть наиболее близкие к

      1. минимуму |c3k3 - c5k5|,

      2. крайним случаям k3 = k4, k4 = k5.

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

    Вроде бы, можно еще решать с помощью линейного программирования, если раскрыть модули 4-мя способами, добавить соответствующие неравенства, решить 4 разные задачи и выбрать самое оптимальное решение. А кто-нибудь когда-нибудь реализовывал симплекс метод во время контеста?

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

    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 и меньше либо равные.

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

раунды див2 пошли: учим строки
не пойму зачем давать две задачи на тупую реализацию?

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

Как решать E? Я пытался перебором вариантов, но ложилось либо по точности, либо по времени.

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

Вопрос: зачем давать две безыдейные реализации?

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

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

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

Какой-то жёсткий раунд... либо пиши много кода, либо сиди и много думай...

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

Hm, no AC for A problem in Java? What was the idea?

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

    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.

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

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

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

Компараторы спасибо, что вы есть! :)

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

Суперскоростное тестирование.

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

Кто писал на Java — как выгляделела бы регулярка для парсинга допустим строки с объявлением функции для Scanner.useDelimiter ?

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

    private String next() throws IOException {

    while (tokens == null) {
    
            tokens = new StringTokenizer(input.readLine(), "\t\n\r\n(), ");
    
        }
    
        if (!tokens.hasMoreTokens()) {
    
            tokens = null;
    
            return null;
    
        }
    
        return tokens.nextToken();
    
    }
»
14 лет назад, скрыть # |
 
Проголосовать: нравится -12 Проголосовать: не нравится

Авторы, чтоб вам всю жизнь пришлось верстать под IE6. Может быть тогда вам надоест тупая реализация в задачах. Я понимаю, что это Div.2 и участникам нужна техника программирования, но не 2(!) задачи в одном раунде на скучную технику. А идейные задачи были сегодня какими-то сильно сложными, будет интересно посмотреть разбор, за них спасибо.

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

    А сколько раундов было проведено по вашим задачам, чтобы давать указания авторам какими они должны быть?

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

      при чем тут сколько он провел, это его мнение по поводу контеста

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

      Никогда не понимал такой позиции: вам нельзя ругать сборную, вам нельзя опускать творчество бибера, потому что вы этого не делали. Авторы вроде как берут на себя отвественность за раунд, который они проводят, и потом будут проводить. Поэтому им лучше сейчас услышать конструктивную критику, чтобы потом раунды были лучше.

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

        критика приветствуется :) а по сути: не все участники див2 хорошо пишут код, поэтому часто задачи А-С несложные и в целом на технику — это полезно. Если Вы быстро и четко сумели написать правильное решение, то это очень здорово, Вам респект.

        В конце концов, если Вам не нравятся технические задачи, то предлагались задачи на подумать: "Кино" и "Тракторный институт", — решайте их.

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

          В конце концов, если Вам не нравятся технические задачи, то предлагались задачи на подумать: “Кино” и “Тракторный институт”, — решайте их.

          задачи конечно найс, но вы перебощили со сложностью, почти никто из див1 не решил их, не думаете?

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

          Ок, мне предлагалось две задачи на подумать. Я подумал и решил, что можно попытаться взламывать по Е, а A уже нельзя, слишком много писать ради взломов. Итого Е решило 11 человек, а A 8. Раунд для примерно 1000 участников стал, кто быстрее найдет и напишет B и отловит косяки в двух реализационных задачах. Я не спорю, идейные задачи интересные и мне хочется узнать их решение, но они не для моего уровня( и как оказалось не под силу большинству Div.2). Я не против реализационных задач, но в разумных количествах.

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

Аффигительный контест! Спасибо авторам за интересные задачи, надеюсь вскоре будут еще подобные контесты!!! Жаль что нехватило времени дорешать С

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

Спасибо за отличный контест))) Очень понравился , 2 часа на одном дыхании)))

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

А почему это стало в 6-м тесте по задаче С ответ 4-0, если нас устраивает любая победа и у нас "1 или 2 место, а при неоднозначности выбираем счет с наименьшей разницей"???

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

Спасибо за крайне быстрые систесты и пересчёт рейтинга. Всегда бы так.

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

Предлагаем вашему вниманию уникальный Codeforces Round #126 (Div. 2).

Уникальный в плане количества задач на технику?

Обратите внимание, что Codeforces Round #126 (Div. 2) проводится только сегодня, и только сегодня у вас будет единственная возможность поднять рейтинг в этом соревновании.

Да... Людям, не любящим думать над идейными задачами, редко улыбается такая удача, как на этом раунде.

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

What about constraints for problem C? I really think problems should be written more carefully.

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

Спасибо большое за контест!!! Задачи хорошие!!!

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

вопрос: почему в С нельзя всегда выводить запредельный счет, например 1000:0, как выводил я?

1828992

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

    Потому что требуется минимальная разница между количеством забитых командой Берляндии и забитых команде Берляндии.

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

    потому что при неоднозначном выборе нужно было вывести тот счет, в котором разница голов меньше. Поэтому иногда лучше счет 1:0, 5:3, 8:1 и другие

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

    в случае неоднозначного выбора требуется выбрать счет X:Y, при котором величина X - Y принимает наименьшее значение; если все еще невозможно однозначно определить счет, то нужно выбрать тот, в котором величина Y (количество пропущенных Берляндией голов) минимальна.

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

    в случае неоднозначного выбора требуется выбрать счет X:Y, при котором величина X - Y принимает наименьшее значение;

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

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

»
14 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится -13 Проголосовать: не нравится

Россия — Греция 0:1

If you understand what I mean =)

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

расскажите пожалуйста идею решения E.

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

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?

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

Объясните пожалуйста, почему в задаче С 10 тест


OOOBBSSCAQFNGLB BERLAND 7:2 OOOBBSSCAQFNGLB MFRZATRH 1:3 ZNRFARJZAVB BERLAND 0:0 ZNRFARJZAVB MFRZATRH 5:3 ZNRFARJZAVB OOOBBSSCAQFNGLB 0:5

ответ 3 1 а не 2 0

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

Насколько я понял, авторы задачей С очень тонко намекали на Россию в матче с Грецией самой постановкой задачи, а также, например, этой фразой X > Y, то есть Берляндия собирается выигрывать в этом матче; Если это не так, то я помешался на футболе =(

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

    да можно было и вничью сыграть, так что врядли на это намекалось

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

    Там же написано, что все совпадения случайны.

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

    Разумеется идея задачи пришла не случайно. Я даже предлагал дать в качестве входного теста результаты матчей нашей группы) но в итоге не стали. Очень обидно за нашу сборную. Россия вперед. А раунд, надеюсь, понравился.

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

      Лучше бы вы сделали по настоящим правилам (я про порядок критериев). Была бы задача интереснее.

      p.s. А разбор ожидается?

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

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

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

разбор будет сегодня?

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

Меня одного немного смущает, что только один участник первого дивизиона смог решить все задачи предназначеные для второго дивизиона?

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

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

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

Классный раунд был.Большое спасибо Авторам...!!!!

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

When will the editorial be uploaded

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

When will the editorials be posted?

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

When will the editorials be posted?