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

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

Друзья, привет!

Через несколько часов Вам посчастливится участвовать в знаменательном раунде Codeforces Round #27 для участников Div. 21, но традиционно остальные могут поучаствовать вне конкурса. Он был подготовлен небольшой командой авторов: я (NALP), Игорь Кудряшов (Igor_Kudryashov), Павел Холкин (HolkinPV). Как всегда с нами были Геральд Агапов (Gerald), Мария Белова (Delinur) и Михаил Мирзаянов (MikeMirzayanov).

Как вы все прекрасно знаете, только сегодня вы сможете поучаствовать в этом раунде в конкурсе, не упустите такую возможность! Другого раунда Codeforces Round #27 вы не увидите нигде! :)

Традиционно всем удачи, полных решений и удачных взломов!

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

UPD: Соревнование закончено, всем спасибо за участие. Надеюсь вам понравилось, но не забывайте, что нас еще ждет системное тестирование.

UPD: Уже опубликована предварительная версия разбора на русском языке

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

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

стоимость задач динамическая?

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

    в сообщении, пришедшем мне на e-mail написано, что раунд будет проведен по оригинальным правилам Codeforces. То есть нет, не динамическая система)

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

I'm predicting most of the problems will have jokes on 2-powers

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

Good luck to all! :-)

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

using dymantic score or something else?

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

can you talk about Score distribution. hope short and clear statements. Finally ,Thanks for preparing this contest.

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

Судя по номеру будет много математики ;)

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

А какой конкурс?

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

hoping for short and precise statements...

may it b overall a gud cntst..:)

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

Скучно как-то. Вот на topcoder по поводу power-of-two даже стоимости задач соответствующие делали: 256, 512, 1024...

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

оффтоп. Почему минусуют личностей, желающих всем удачи?

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

Nothing New!!! :P Everything is traditionally traditional!!! :D

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

Points should be: 512(2^9), 2*512, 3*512, 4*512, 5*512. :)

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

Смайлик в анонсе принесет всем удачу на контесте :-)

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

Главный герой первой задачи это Qwerty821 или это совпадение?

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

Хороший контест, чтобы почувствовать себя умным, но медленным.:(

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

как решалась Е? аккуратной жадиной?

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

I cannot understand why this solution does not hack successful on the test case 1000 1 1000 1000 for problem B div 2.

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

Спасибо за замечательный контест))))

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

Е решается бинпоиском по массиву, отсортированному по возрастанию количества затрачиваемого топлива, роботов, которые могут кого то везти и пересчитываем ответ???

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

    Е решается так: вначале мы находим максимальное количество роботов, которое мы можем перевезти, а потом бинпоиском находим минимальное количество топлива, нужное для перевозки такого количества роботов. Но я сам где-то не учел какую-то мелочь.

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

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

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

Мне показалось, или контест продлили на пару минут из-за лагов?

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

I hope next time there'll be more fluent English in the description of problems. I know that many authors aren't native speaker but today's problems are just a bit of difficult to understand. Besides how long will the system test be?

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

I think I'm not the only one who miss if x = 0 so I failed on preetest 3 :) Edited : On problem A

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

System test has begun, finally!

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

в Д, походу, были слабые претесты

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

Приветствую!
Подскажите пожалуйста как нужно писать ( или где можно об этом прочесть) генератор для взлома на С++ и не получать:
-FAIL Expected EOF (stdin)
-FAIL Expected EOLN (stdin)
Благодарю.
UPD: вопрос решен — моя ошибка, а именно выводил более чем М запросов ( задача В ). Теперь понял почему EOF expected.

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

Спасибо за классный контест. Задачи интересные, мне понравилось.

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

Тестирование завершено?

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

Cool contest guys! Imo little bit easier than last ones.

I have to criticize the task description of task A though. It repeatedly uses the term "cost" to describe the score of the problem. If this is not clear... cost has a negative connotation, decreasing the cost with time thus means that we get a higher score with time. Really confused me there.

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

Комната 22, тестирование по двум решениям задачи С зависло.

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

So unlucky. The test size of C is 10^5 but I mistaken it as 10000. I missed my AK this time, such a pity. The good thing is my E is AC.

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

How to solve Problem D div 2?

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

    Assume there are three balls one going with velocity vx, other with velocity vy, and third with velocity vz. Now at the time of 2nd ball colliding with Door, find where are the two other balls.

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

    First observe that reflection does not change ball's speed in dimensions so you can easily calculate the time that ball gets to y=0, T. Now calculate X and Z of the ball after T seconds. Now you need to find its position inside corridor. Notice that X,Z dimensions are independent. Consider final X of the ball without reflection is X0 and after being reflected once and changing its side, final X of ball without any further reflection is X1. By laws of reflection, X0 and X1 are symmetrical to each other by the wall which ball was reflected by so if it hit X = (a) line then you can calculate X1 as : X1 = 2 * a — X0 and if it hit X = 0 line, X1 will be -X0. And go on from this point until X and Z are inside the corridor. These actions can be done by some easy while loops. I hope this explanation's been helpful for you. If you need further information on this solution, please let me know.

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

    D was quite easy today, look at my submission (sorry, no time for comments in contest), only solve() is important...

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

в комнате 3 задача B повисла, если это поможет

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

The English seems much less comfortable than SRM.......

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

As soon as i posted this comment system test ended. really sry.

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

http://codeforces.me/contest/203/submission/1860447

почему такое решение получает WA7? У друга посмотрел, у него такой же ответ и тест пройден...

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

решил 3ю задачу как на разборе. не прошел 37 тест почему? там ограничения должны же вместиться в ИНТ!

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

Подскажите, откуда может быть такое исключение, где я натупил http://codeforces.me/contest/203/submission/1856933 java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.TimSort.mergeLo(Unknown Source) at java.util.TimSort.mergeAt(Unknown Source) at java.util.TimSort.mergeCollapse(Unknown Source) at java.util.TimSort....

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

Finally over. Ranked 31 in official participants. Not so bad, but have mistaken the test size of C is so awful. When'll the Rating be updated?

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

задача C: на c# ни у кого не прошел тест 53 по TLE. проверил свое решение локально на 100000 строчках — меньше секунды. баг?

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

    Возможно антиквиксорт тест? Когда-то читал, что Petr когда-то получил ТЛЕ из-за того, что квиксорт на C# работает за квадрат, причем получил на онсайте.

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

      Печально. А можно как-нибудь получить полный текст этого теста?

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

        Думаю, нет. Зато можно рандомно перемешать массив, и посортировать уже его.

      • »
        »
        »
        »
        14 лет назад, скрыть # ^ |
        ← Rev. 3  
        Проголосовать: нравится 0 Проголосовать: не нравится
        по-моему там все парные числа от 1..max.На паскале ето можно легко исправить рандомизацией. 
            procedure sort(l,r: longint);
              var
                 i,j,x,y: longint;
              begin
                 i:=l;
                 j:=r;
                 x:=a[l+random(r-l)];
                 repeat
                   while a[i]<x do
                    inc(i);
                   while x<a[j] do
                    dec(j);
                   if not(i>j) then
                     begin
                        y:=a[i];
                        a[i]:=a[j];
                        a[j]:=y;
                        inc(i);
                        j:=j-1;
                     end;
                 until i>j;
                 if l<j then
                   sort(l,j);
                 if i<r then
                   sort(i,r);
              end;
        l+random(r-l) вместо (l+r) div 2
        

        UPD. 946517 74 тест

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

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

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

    Этот Mono у меня уже в печёнках сидит :E Много контестов я уже завалил из-за его тормозов. А теперь выясняется, что у него еще и сортировка глючная.

    Уважаемые авторы Codeforces, поставте нам микрософтовский .NET! Очень просим

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

      А Вы в курсе, что Array.Sort() в официальном(!) майкрософтовском(!!) .NET 4.0(!!!) написан ровно так, как первоначально объясняют квиксорт школьникам из параллели C на ЛКШ, т.е. с выбором опорного элемента через (l + r) / 2? Правда, школьникам в параллели С (в отличие от индусов из майкрософта) сразу же объясняют, что не хрен так делать.

      UPD. Насчет того, что в дотнете "школьный" квиксорт, я ошибся (см. мои посты ниже).

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

        У вас ложное представление о том, как реализован Array.Sort() в .NET вообще и в 4.0 в частности...

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

        Смотрите исходники внимательнее. Там выбирается медиана из трёх элементов. Хотя это тоже не гарантия, я в курсе, но хоть что-то.

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

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

          Я лично декомпилировал mscorlib.dll и смотрел реализацию квиксорта. Вот как там реализована та самая функция Array.GetMedian():

          // System.Array
          [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
          private static int GetMedian(int low, int hi)
          {
          	return low + (hi - low >> 1);
          }
          
          

          Если вас обоих это не убедило — возьмите ILSpy и сами проверьте.

          UPD. Да, я ошибся, медиана действительно находится (берутся первый, средний и последний элемент). Но такой квиксорт завалить все равно не сложнее, чем обычный.

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

            Я не знаю куда вы там смотрели и при помощи чего. Простой тест. Вы можете написать код метода GetBadArray, который бы вызывал квадратичное время выполнения Array.Sort()? Если там простой квиксорт, которому учат в школе, то вам это не составит труда. Причем можете попробовать как в .NET 2.0 так и 4.0...

            class Program
            {
            	static void Main()
            	{
            		int[] array = GetBadArray();
            		System.Array.Sort( array );
            	}
            	static int[] GetBadArray()
            	{
            		...
            	}
            }
            
»
14 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

please somebody tell me whats wrong with my comparator in problem C.I cannot figure out for which values it cannot make a decision..Here the code

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

Problem E was nice.it has more thinking rather than just coding. thank you all

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

    I agree with you. It has nothing to do with advanced algorithms and data structures, but remains as a challenging problem. In order to solve this problem, one must observed that if a robot with c larger than 0 is chosen then all robots with c larger than 0 can be chosen. It took me over 30 mins to figure out how to solve this problem.

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

Can Anyone Describe me why I stayed blue in rating?? I became 24th and solved four problems. I ask this because people with lower rank became purple!

The contest was great. Thanks a lot to problems authors! ;)

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

Hello, excuse me for the question but this is my first competition in this website and i kept having wrong answer on 7th pretest in task E. So i tried to find my mistake but i couldn't, so after the competition is over, i was wondering if there is any possible way to check what the pretest was, and see why my program mistaked there. Thank you in advance :)

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

В задаче С в QuickSort было поставлено x:=m[(l+r) div 2] ТЛ. Просто поменял на x:=m[l+Random (r-l)] все прошло!!!

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

    А в чем проблема? В такой задаче было бы странно не сделать антиквиксорт теста для разбиения пополам.

    UPD: господа несогласные, прокомментируйте ваше мнение, минусовать все горазды.

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

Y U no put small clear problem statements :)

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

I got a strange result with my code on D, on test case 31:

-1.#IND000 -1.#IND000

On my pc it gives the expected result, I had to add a test to verify if the vz (or vy or vx) is 0 and ignore calculations on them to get accepted, here is my submission:

http://codeforces.me/contest/203/submission/1861627

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

1861821 Can you tell me why I got a TLE on problem B ?

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

rofl @ pretest 3 of task A... this guy boasted he has a score of ZERO? WTF is wrong with him :)

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

when we can get THE EDITORIAL!!