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

Автор gen, 12 лет назад, перевод, По-русски

Всем привет!

Сегодня в 19:30 по Московскому времени состоится раунд Codeforces #238. Контест пройдёт в обоих дивизиях.

Раунд был подготовлен мной и cfk. Это мой 4-ый раунд и 2-ой раунд Кришьяниса. В этот раз, по-моему, задачи весьма необычные и, может, даже неожиданные. Мы уверены, что любой участник(ца) найдёт себе задачу по вкусу! Но нужно её найти. (:

Как всегда, спасибо Михаилу Мирзаянову (MikeMirzayanov) за проект Codeforces и систему Polygon, и Марии Беловой (Delinur) за перевод условий. Большое спасибо Геральду Агапову (Gerald) за помощь в подготовке контеста. Мне и Геральду повезло обсудить задачи очно во время зимних Петрозаводских сборов, что, по-моему, оказалось очень полезно.

Мы желаем вам захватывающего раунда!

UPD1: Распределение баллов:

DivI: 500 1000 2000 2000 2500

DivII: 500 1000 1500 2000 3000

Баллы выставлены относительно, чтобы стоимость каждой задачи делилась на 500, и была бы ближе к объективной оценке. Не пугайтесь, на самом деле задачи не настолько сложные. (:

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

DivI:

  1. al13n
  2. Shef
  3. scott_wu
  4. sillycross
  5. Komaki

DivII:

  1. NelsonMondialu
  2. L_Ecry
  3. aaaaAaaaaAaaaaAaaaaA
  4. xorfire
  5. Hec

UPD3: Замечательная статистика раунда от DmitriyH.

UPD4: Разбор опубликован здесь.

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

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

"Problems will be unusual and surprising". Hmmm... Sounds interesting. Good luck to everybody...!!!

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

Пора домой в желтые.

UPD Договорился ;(

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

First Contest in Iran's New year and unusuall problems!! Great!!

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

Every contest anybody has new year and should write about it. It's sooo interesting for us!

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

On this round I wish all high ranking.

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

wish all participants a very happy Match ^_^

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

This round will be even unusual and surprising for me, if my solution of Problem-C gets AC and fails system test of Problem-A :)

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

Ёмкий набор тегов: codeforces, раунд, фармить вклад

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

Hi all, wanted to ask a simple query. How to find name of blogs in a tabled manner, In the right panel titled "Recent Actions", If I click on detailed, I can see comments of people over different blogs, But I dont want that. I want to see more number of blogs similar to ones shown in that panel itself. Eg. I would like to see around 30 entry per page for Recent actions, Is the any such option available somewhere on codeforces?

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

My first D1 round. So exited :O #mlc

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

E is 3000 seems that opening it during contest time is useless :D

»
12 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Комментарий удален по причине нарушения правил Codeforces
»
12 лет назад, скрыть # |
 
Проголосовать: нравится +20 Проголосовать: не нравится

Loving the pretty pictures.

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

Thanks for the contest I really really enjoyed C in DIV2 ;-) It's amazing problem !!!

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

Авторами подразумевалось, что Div2(C) в TL влезает с асимптотикой O(n^2 + nq)? С такой асимптотикой решение, которое я пытался взломать, приблизительно 0.75 секунд работает.

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

    Чисто за n2 + nq не подразумевалось. За (n2 + nq) / 32 — может быть. То решение прошло тесты?

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

      Нет, не прошло. Я торопился, и составил тест из 10^6 запросов на инвертирование одной и той же строки. Скорее всего, оно хорошо кешировалось и из-за этого залезло в TL, с инвертированием столбца было бы иначе.

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

        Ясно. Народ, а кто-нибудь сдал какое-нибудь решение с битсетами?

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

          А такое решение вообще есть?)

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

            У меня есть только искусственное, которое проходит во время. По сути там я каждый запрос умножаю строку на столбик с помощью битсетов, но это произведение умножается на 2 и пропадает (это сложно не заметить во время контеста и убрать).

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

Awesome problems. I really enjoyed solving C and D. Thanks for the contest.

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

Haha, I spent most of time on problem C and didn't solve it. :( Good contest though.

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

Very nice problemset, I found my problem! It was Div1 C :)

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

Nice contest, the pretty complicated at first Div1 A turned out to be awsome. What was the main idea behind D? I used a stack and LCA, but got WA. I imagined that the stack part was wrong, but couldn't find any counterexample after looking for it 10 minutes. Do you have one? (I would like to add that the stack used line intesections, not just simple comparisons)

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

    Stack works when you can't see a hill again after removing it, which doesn't work in this case.

    The LCA is correct (that's pretty easy to see). To find the next hill a climber goes to from hill i, you add the points from right to left, remember the top convex hull (well, it's actually a concave curve, but it uses the same idea as convex hull algorithm) of these points, update it when adding points and always pick the leftmost point in the hull so far (after the just added point, from which the climbers go to the next point of the hull). This can be done using vector cross product — as long as the leftmost 2 points of the hull (if they exist) are placed in such a way that the leftmost one is below the line from the just being added point to the one to its right, you remove the leftmost point of the hull — because it won't be in the top convex curve ever again. It works the same way as the standard convex hull algorithm.

    Another contest where D appears simpler than C. At least to those who are used to more algorithmic problems — like me :D. Too bad I missed the start of the contest (thanks to the modern world's stupid shopping obsession), I think I could've done well.

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

      Thanks a lot for the pointers, In order to understand why my stack is not right, do you have a small handly counterexemple? thanks.

      Edit: I tried to build a counterexample like this:

             |   
             |
             |
             |
        |    |
      | |  | | 
      1 2  3 4
      (In reversed order, from right to left)
      

      On an exemple like this, my stack alg runs as follows:

      Push 1
      make_edge(1,2) (i will not write these from now on)
      Push 2
      try to pop the stack -> verify whether or not line segment 1 3 passes through hill 2 -> no -> no pop
      Push 3
      try to pop the stack -> 2 4 is above 3, so we pop the stack
      try to pop the stack -> 4 1 is above 2, so we pop the stack
      (make edge 1,4)
      Push 4
      

      And now we have our tree, on which we apply a LCA algorithm.

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

        Depends on the exact approach. Just be satisfied with the general guideline that stack is useful if you're sure that you can't use a discarded element again. In this case, it fails because heights of hills can vary greatly — you can discard and use again any hill many times.

        If you want a good counterexample, you can always look for it yourself — try the case that gives WA; if it's too large, try generating your own and comparing against AC solutions, etc etc.

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

          I edited my approach ^, I also corrected a few small mistakes and got ACC. Please note that my stack pop criterion is geometry heavy, something like

          if(((1ll*stack[poz].x-stack[poz-1].x)*(1ll*v[i].h-stack[poz-1].h))<((1ll*stack[poz].h &mdash; 1ll*stack[poz-1].h)*(1ll*v[i].x-1ll*stack[poz-1].x)))
          

          No need to try to understand the formulas, all I did was to check if a segment intersects another.

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

            It could quite possibly be the same thing I was talking about. (Convex hull can as well be implemented with stack.) I just expect an algorithm that's called just "stack" to have storing the hills on a stack to be the most complex idea in it :D

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

My best performance in cf ever(Div2 5th place wink). Thanks a lot for the mathy contest :D

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

    And I am probably going to fall at my lowest rating in the last 2 years or so. Last two contests have been miserable for me. Making a lot of silly mistakes, I dont know what has happened. :( T_T . But both of these contest had very exciting problems.

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

Почему 6106684 ловит TL на претестах?

ios_base::sync_with_stdio(0); есть, и входные/выходные данные не double.

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

Nice contest! Interesting and solvable problem :)

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

Объясните, пожалуйста, популярно, почему каждый флип меняет парность ответа?

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

Как искать в задаче Div1-D для конкретной горы a нужную нам(правую) гору b

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

    Изначально скажем, что этот "предок" — первая справа гора, если такая вообще есть.

    Далее будем делать итеративный "подъем" — если наш предок не закрывает видимость на своего предка, то делаем нашим предком предка нашего предка. Иначе останавливаемся. Фактически в задаче от нас требуют выпуклую оболочку — и этот алгоритм проще понять, представив его, как построение выпуклой оболочки.

    Понятно, что каждая новая вершина добавит в выпуклую оболочку не более одного ребра, и каждое ребро мы из оболочки выбросим не более одного раза, поэтому сложность такого построения графа — O(N).

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

I got TLE in Div1 A on pretest 7. I had used cin cout with ios::sync_with_stdio(false). Until now I used to think that this method is faster than scanf printf. But when I changed this to scanf printf , the code was accepted. What is the reason for this?

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

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

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

Very nice problem :) it's really surprising !

-.- but I late to realize that

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

А можно еще попросить, объяснить, почему мое решение на А упало? не понимаю :(

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

Thanks to authors for illustrations! Very helpful!

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

Great Round ! too bad my C couldn't make it through the system tests :D, I realized after that it had a very simpler solution than i thought

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

Как раскрыть скобки в задаче С? а то у меня не получается получить формулу.

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

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

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

    В итоге получается сумма произведений диагональных элементов, что в свою очередь является просто суммой диагональных элементов. Произведения всех остальных пар производятся дважды и дают в результате либо 0, либо (2 * 1) % 2 = 0, стало быть, их можно не учитывать вовсе.

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

    Очевидно [прямо из условия следует], что ответом на задачу будет

    (tr(A^2)) mod 2
    

    По свойству следа матрицы получаем:

    tr(A^2) mod 2 = (tr(A)*tr(A)) mod 2 = tr(A) mod 2
    

    UPD: Пояснение здесь

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

    матрица a размера n*n

    скобки

    (a(1,1)*a(1,1)+a(1,2)*a(2,1)+...a(1,n)*a(n,1))+(a(1,2)*a(2,1)+a(2,2)*a(2,2)+...a(2,n)*a(n,2))+ ...

    (a(n,1)*a(1,n)+a(n,2)*a(2,n)+...a(n,n)*a(n,n))

    скобки по строкам — отбрасываем(они не влияют)

    получаем ситуацию, когда каждая пара произведений (кроме a(i,i)*a(i,i)) встречается по два раза их сумма всегда ноль(1+1=0б 0+0=0) остаются пары: a(1,1)*a(1,1)+a(2,2)*a(2,2)+...+a(n,n)*a(n,n)=a(1,1)+a(2,2)+a(3,3)

    Ну а каждое изменение матрицы меняет только одни диагональный элемент. всё

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

    По сути, нам нужно посчитать . Сразу можно видеть повторения. :)

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

Illustrations were so helpful.

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

Хороший контест для неосиляторов сложных задач, вроде меня. Спасибо автору за этот раунд, и за контест в ПТЗ.

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

Зачем вообще такие неразумные ограничения в div2 C/div1 A ??? Вся фишка в том, что переключение с ввода на вывод работает слишком долго??? Но это же глупо ловить решения на таком проколе.... И еще я вообще не понял, почему, в общем-то правильные решения мои решения, отосланные во время контеста на Delhi, сыпались по RE на 3 тесте — там вообще пустая выдача, а они же, но на FPC, доходили до 7 теста, где получали TL. И все это устаканилось только после того, как выдачу сделал одну — в самом конце.

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

    Чтобы запретить оптимизированные решения за n2 + nq, в общем.

    • »
      »
      »
      12 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Вообще-то, все мои посылки работали ровно за n*n+const*q. Но меня окончательно добил тот факт, что посылка с контеста на Delhi, получившая RE на 3-м тесте, спокойно зашла в в дорешивании при закомменченом закрывании outputа. Всегда искренне полагал, что output надо закрывать, и на тебе - с закрыванием сыпется, а баз него все  ОК.
»
12 лет назад, скрыть # |
 
Проголосовать: нравится +9 Проголосовать: не нравится

when will the ratings be updated?

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

удалил.

стало можна просматривать чужой код уже.

решение 6116164 меня устроило :)

P.S. очень красивое решение, кстати

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

Why the Codeforces Judge Doesnot Give Runtime Error in Situation When Size of array is Smaller than that Required... Rather It gives WRONG ANSWER. In some Judges like spoj WE get RUNTIME ERROR. Got WA on test7 PROBLEM C DIV 2 due to shorter array size,I concentrated on other Bugs rather than Array size which i missed ... so Discouraging

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

    global array overflow will not lead to runtime error(if only a little), but local one does. overflowed parts may not be initialized correctly.

    UPD overflowed 2-dimensional array will get wrong answer. See the implementation of 2d arrays: the i+1-th row is placed right after the i-th row. So if you write overflow data in i-th row the result is the data in i+1-th row is modified.

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

    When you do something wrong in C++, you don't get a runtime error. You get undefined behavior, and today you saw one of the many ways how it can behave.

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

When the editorial posted then?

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

please can any one tell me why the judgement verdict "SKIPPED" is shown ........??

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

Thx for contest, I am very happy for my participation, in final I got +163 ratig points) thx a lot

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

чем то эти две посылки очень похожи, или мне кажется? 6115340 6116302

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

Can someone please help me by pointing out why 6118389 solution fails but 6118249 passes ? (Only difference is the part commented out in the AC solution)

The code that has been commented out should have no effect on the final solution, since (X +- (2*Y))%2 is same as X%2 .

EDIT : Will not work in if 2*Y > X.

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

Я один такой неудачник, кого разлогинивало каждые 5 минут?

Не скажу чтобы сильно мешало — всего раз 4-5 за час контеста логиниться пришлось — но любопытно, на чьей стороне такая фича :-o

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

If the result of the judging is Compilation Error, Denial of judgement (or similar) or if the solution didn't pass the first pretest, then this solution won't be considered in calculating results. I take this rule from here
Now I ask If this is the only solution I submit it wrong and get wrong answer in the first pretest so it won't be considered in calculating so it doesn't considered as a try so system has to deal with me as out of contest at this moment like the case of you didn't submit anything. Now,
why my rate change ?

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

Как решается С?

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

    Построим дерево обхода. Запустим рекурсивную процедуру, которая будет разбивать все ребра в поддереве (в том числе обратные ребра, которые начинаются в поддереве) на пути длины 2, возможно, используя ребро, входящее сверху в корень поддерева. После рекурсивных вызовов для детей непристроенными будут только некоторые ребра, инцидентные корню поддерева; в зависимости от четности, либо берем ребро наверх, либо нет.

    Собственно, явно дерево строить не нужно, можно за один ДФС все сделать.

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

    Я не знаю, как рассуждал Endagorion, поэтому опишу свою цепочку рассуждений (решение в итоге получается идентичное):

    1. Ориентируем ребра произвольным образом. Условимся, что объединять в цепочки мы можем только те ребра, которые входят в одну вершину.
    2. Некоторые вершины имеют нечетную входящую степень. Если мы проведем между двумя такими вершинами путь и развернем все ребра на нем, их входящая степень станет четной, а входящая степень всех остальных вершин на пути не изменится.
    3. Из предыдущего пункта очевидно, что путь нас устраивает абсолютно любой. Давайте же будем искать его на произвольном подвешенном остовном дереве.
    4. Заметим, что развернуть все ребра на пути между двумя вершинами — это то же самое, что и развернуть все ребра на пути до корня от каждой вершины.
    5. Соответственно, данное конкретное ребро будет развернуто тогда, когда в поддереве, куда оно ведет, нечетное количество вершин с нечетной входящей степенью.

    Итого, моя реализация — DFS для разворачивания ребер и восстановление ответа циклом.

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

А будет ли разбор?

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

Thanks for the round!

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

first contest and become purple. happy~ >.<

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

Is there a quicker method for console input in java, other than BufferedReader or scanner?seems that using either of them cannot pass problem c in div2?

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

I'm waiting for editorial .

thank you

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

Никак разбора не дождусь

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

The tutorial will be tomorrow they said. Wait for it, they said. -_- :DDD

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

Thanks everybody for participating in this round! We would like to hear your thoughts: what did you like very much or not so much? What can we improve in our next round? (Apart from the late tutorial, sorry for that..)

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

    The Style and the format of problems were very interesting (especially prob. C and D in div. 2)! I liked the problem statements, they were very clear and easily understandable.

    Maybe the only thing that I didn't like so much, is that there was little opportunity of hacking someone's solution, maybe for some of us it's good, but I think that passing the pretests almost meant passing the System Testing.

    But, in general I hope seeing more this kind of rounds here at CF. It can serve as an ideal example for the upcoming contests. We are waiting for other, even more interesting and challenging problems!

    Thank you for the hard efforts ! :)

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

    I liked that the authors messed with my head in Div1 B/Div2 D by making an example where |X| did not equal |Y| (because one term was 0 and could be omitted), and then writing

    instead of

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

    Thanks for organizing the round. I tried to solve problems A-C in Div1. Problem C was excellent: a "natural" problem and a very clear problem statement. Problems A and B were also interesting, but they were somewhat difficult to understand due to the complex problem statements. In addition, it's not nice when cin and cout are too slow (and warning about this makes the problem statement even longer) — maybe it wouldn't have been necessary to use so large test cases.

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

      Cin and cout aren't too slow if you use the right tricks. (Okay, they are sometimes, but such problems are very rare.) It's not actually an author's obligation to warn about it, and in some problems it even seems unnecessary (200000 integers is hardly an extra large test case) — take it as gen's generousness of sorts :D

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

    I think div1 problems (A-D, I don't know how to solve E so far) are really awesome. Thank you for the contest.

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

Непонравились прыжки количества данных в претестах, например в задании "D" (Div.2) первые 9 претестов дают макс. 9 данных, а 10-ый претест дает — 500 000 (макс. количество). Из-за этого трудно определить — сколько времени нехвотает для решения.(мое решение паскалем ели справилось — 935 мс (6129758), но незнаю, сколько нехватает другими языками)

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

    По идее, для проверки того, укладывается ли в таймлимит Ваше решение, стоит пользоваться вкладкой "Запуск".

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

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

    С другой стороны: если, например, в претестах 5 и 6 соответственно ограничения 10000 и 100000, большой ли смысл ускорять решение, которое не работает для 10000 только до такой степени, чтобы оно свалилось на 100000? Скорее, лучше сразу получить информацию, что решение не проходит во время в худшем случае (то есть макстест).

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

      Согласен, но если разница по-меньше, например 120 мс (из 1 с) в тесте с 10к (когда макс — 100к), то можно предположить что на макс-тесте будет работать 1,2 с (если O(n)), тогда можно поковыряться в коде и иногда найти, где ускорить.

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

        Ну дело в том, что сейчас хорошим тоном считается класть мактест в претесты. Так что можно на это рассчитывать. К тому же, каким образом во время соревнования можно узнать, какие ограничения даны в тесте? Поэтому мне лучше нравится политика: «ТЛЕ на претестах, значит не проходит макстест».

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

239 ?