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

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

Здравствуйте, друзья)

Рады приветствовать вас на очередном раунде Codeforces #123 для участников Div. 2. Традиционно, остальные могут поучаствовать в нем вне конкурса.

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

Распределение баллов по задачам стандартное: 500, 1000, 1500, 2000, 2500.

Всем участникам желаем успехов и высокого рейтинга!

UPD: контест завершен, разбор задач появился здесь

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

  1. bmerry
  2. adrian.jaskolka
  3. cheshire_cat
  4. alexej
  5. psw
  • Проголосовать: нравится
  • +64
  • Проголосовать: не нравится

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

эх, время-то неудачное для раунда :(

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

I am students.

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

gl & hf

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

Исправьте ошибку в слове "жела**ни**ем". UPD: Исправлено

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

Рассылка о раунде почему-то у меня в списке спама (почта gmail).

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

Good luck to all. :-)

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

Ну вот : как голы пошли — сразу решать надоело...

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

Что ломали в А?

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

Почему в С первый пример не "AE in line 5"?

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

I hate problem C.......

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

Классный контест. Очень понравились задачи, но ИМХО С была сложнее Д.

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

Футбол? Не, не слышал.

Раунд получился великолепный! Авторам респект и конечно будем еще ждать от них подобного!

Благодарю.

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

Посмотрел несколько решений по D, почти все без double'ов. Интересно, мои пляски с double'ами и эпсилоном 1e-12 пройдут?)

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

раунд мне вообще не понравился:
С — какая-то задро реализация
D — >> Нетрудно показать, что в этом случае график s(x) является ломаной
ну так возьмите и покажите, хотя бы в одном примере для разъяснения
E — хрен поймешь условие, черт голову сломит

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

    ...Раунд я, как всегда, не писал, но он мне всё равно не понравился.

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

    Классный раунд, отличные задачи, вполне нормальное условие в E, а в D вполне очевидно, что s(x) ломаная, причем, несложно заметить и какие точки будут ее вершинами, что дает решение.

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

    Насчет D соглашусь. Чего-то явно там нехватало.

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

    В E в условии написано дан DSU посчитайте то, что вас попросили. Термины вроде тоже стандартные. Только операция какая-то странная.

    В D. Сумма кусочно-линейных, кусочно-линейная, кэп вам поможет.

    С. Решение. 40 строк кода если убрать шаблон. Это с кучей assert, и моим достаточно вертикально-вытянутым стилем написания. Обычный простой парсинг строк. sscanf как всегда всех спасает.

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

      E — да прям уж так и написано, ага.
      D — да я не прошу мне что-то объяснять, я говорю о том, что рисунок в этой задаче был бы не лишним, по крайней мере в этой и этой задаче, он нафиг не нужен, но он там есть, в этой задаче он помог бы разобраться с примерами — фигушки, а не рисунок

      С. Решение. 40 строк кода

      это не отменяет ее задротную реализацию, лучше бы дали бы какую-нибудь идейную задачу

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

        Ну Е и D были чисто идейными.

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

        Е — по мне так, если знать что такое DSU, то да.
        D — Это все таки тоже часть задачи, понять как это устроено. Пояснение на сэмплах действительно было бы уместно наверное. Тем более тут практикуют очень подробное их описание.
        С. у меня в упор не состыкуется прилагательное "задротную" и менее 150 строк. Причем не сильно насыщенных. То что это техника, и не совсем элементарная, если не подумать как писать, это да. Я знаю человека, который про все 5 задач сказал бы что это техники. Писать надо уметь и то и то. Тем более что Div-2 контесты еще и обучающие.

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

          ну с Е я прямо скажем погорячился
          у вас было много времени на обдумывание и оптимальное, красивое написание С, поэтому так коротко. у всех же участников строк по 100 кода. проблема таких задач в том, что они убивают время на их написание, а потом еще и поиск ошибки. мне никогда не нравились такие задачи, где нужно шезофренически учесть все случаи

          и еще >>Я знаю человека, который про все 5 задач сказал бы что это техники

          так и хочется добавить "и это я" ))

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

    D. Сумма непрерывных функций есть непрерывная функция. А тут ещё и кусочно-линейная. Понятно, что ломаная.

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

    Вот честное слово, условие перерабатывали много раз. Разобрали сэмпл по шагам. Написали все формально и четко. Мы правда очень старались, чтобы было предельно понятно.

    Что именно вам кажется плохо сформулированным?

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

    у меня 45 строчек кода без супер идеи в реализации. Просто в лоб. (на Java)

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

О, в матче сейчас опасный штрафной будет.

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

а как решать Е?

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

Я не понял почему в С не сказано двойные или одинарные кавычки ? Я обрабатывал только двойные. В итоге ACC. Интересно. Если бы взламывали на этом, что бы было ?

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

Жаль, что по задаче С, несмотря на "Это означает, что во входных данных могут встречаться пустые строки или строки, состоящие только из пробелов.", выдается "Некорректный тест", если в попытке взлома есть строка состоящая из одного или нескольких пробелов.

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

I spent about 30 min and 3 wrong answers on problem B ... because I thought (m + 1) / 2 is integer division not normal division ...

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

Will n log n time out in problem D? Mine nlog n timed out. Is there any o(n)?

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

Problem B. You should mention that if m is 6, for example, (m + 1) / 2 equals 3 or 3.5.

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

А когда рейтинги обновят?

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

Спасибо ,друзья, за замечательнейший контест, мне он очень понравился!!! Создавайте контесты еще)))

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

Что за дела с рейтингом?...Даже 1-ое место (bmerry) не прошел в див.1, хотя до этого не участвовал ни разу.

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

По скорее нужно удалить c.cpp пока комп не сломался :)

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

In problem C I used Scanner and it not even passed the first test case..Then I used BufferedReader and it got accepted..Could anyone explain why?? Scanner BufferedReader

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

Problem E,I can't understand "angle"...what is that?

It means parallel to the X axis ?

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

In problem C:The program may have spaces at the beginning of a line, at the end of a line, before and after a bracket, a comma or a quote mark. But I got stuck in cin.getline(s,55,'\n'). I don't know why it reads more lines than you data gives.

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

For problem A, I was looking at bmerry's solution but I don't understand why the formula he used is: down_time = (c*a + b - 1) / b

A lot of solutions I studied use this formula or some variation. I was trying to solve the problem using some kind of simulation but was unable to, but everybody's I've looked at uses some kind of formula.

The other thing he does is subtract c from downTime, and the answer is max of 0 or that difference.

Can someone explain how to come up with this formula? Thank you.

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

    I simulated problem A. You can take a look at my code here

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

    brute force solution here

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

    What I'll tell is effectively the same solution.

    If b ≥ a, then we can wait 0 seconds and still there will be no delays in the streaming.

    Suppose that b < a. Consider the moment when the streaming has finished. By problem statement we must have (t + c)b ≥ ca (the amount of data received in t + c seconds is not less that the amount of data in c seconds of the video).

    Lemma: If (t + c)b = tb + cb ≥ ca, then also for any 0 ≤ t0 < c it holds that tb + t0b ≥ t0a (the amount of data received in t + t0 seconds is enough to play t0 seconds of the video).

    Proof:

    tb + cb ≥ ca
    tb ≥ ca - cb
    tb ≥ c(a - b) ≥ t0(a - b)
    tb + t0b ≥ t0a, 

    because $0 \geq t_{0} < c$ and b < a.

    Consequently, we only need to find such t that tb + cb ≥ ca is true, and the rest will follow. The smallest integer t that satisfies this inequality is

    Finally, for integer division that is equal to

    You can also take $c$ out of the numerator, which gives you bmerry's

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

Will there be an editorial ?