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

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

Всем привет!


Мы рады пригласить вас поучаствовать в раунде #86. Авторами раунда являются Андрей Малевич (aka Kenny_HORROR) и я, Тарас Бжезинский. Мы оба студенты 4 курса Белорусского Государственного Университета.  Благодарим MikeMirzayanov ,  it4.kp , RAD , Gerald и Fefer_Ivan за помощь и советы в подготовке задач и  Delinur за перевод.

На раунде вы вспомните вместе с мальчиком Петей его школьные дни и поможете решить ему некоторые  задачи.

Раунд будет проводиться для обоих дивизионов, разбалловка задач будет стандартной(500 - 1000 - 1500 - 2000 - 2500). 

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

Всем удачи и высокого рейтинга!


UPD

Контест завершен, рейтинги пересчитаны. 
Победители:
DIV1:
2) KADR
3) yaro
5) Egor

DIV2: 
4) lxn

Доступен разбор, к ночи появятся остальные задачи.
  • Проголосовать: нравится
  • +12
  • Проголосовать: не нравится

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Третий раз подряд про Петю :) А запуск на сервере будет работать в этот раз?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
gg gl hf
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Мне кажется, что виртуальный турнир должен быть отключен как минимум по причине того, что в нем можно проверить решение на всех тестах.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Очевидно, имеется ввиду виртуальные турниры для предыдущих раундов.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Волшебный кролик!
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Уточните пожалуйста, что требуется в С(div. 2). В условии сказано:
"Ваша задача — по заданному набору слов определить, верно ли, что данный текст представляет собой ровно одно предложение на Петровском языке."
Также сказано:
"Если какое-то слово заданного текста не принадлежит Петровскому языку, или в тексте содержится более одного предложения, выведите «NO» (без кавычек). В противном случае выведите «YES» (без кавычек)."
А если текст полностью состоит из слов Петровского языка, но не содержит допустимых предложений (например не содержит существительного), то какой ответ?

  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Предложение может состоять из одного слова, и тогда такой тест представится в виде набора нескольких предложений, а не одного.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Я имею ввиду может ли текст вообще не содержать предложений, но при этом состоять из слов Петровского языка?
      Например сколько предложений в тексте "nataliala kataliala"?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

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


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

Пытаюсь отправить задачу на Java, мне вылазит сообщение

"Исходный код должен удовлетворять регулярному выражению [^{}]*public\s+class\s+(\w+).*"

Что делать?

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Сервер сегодня меня удивляет. Посылка по С, выдающая на сервере на 1 тест "NO", после добавления к ней двух строчек printf(""); выдаёт уже "YES". Это очень сильное колдунство.
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Почему не работает тестирующая система?

У меня задача С не проходит и времени осталось мало, так что я могу пролететь с задачей С из-за системы!
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
very slow judging queue.. =.="
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
String tasks are not interesting! They were exhausting
13 лет назад, # |
Rev. 4   Проголосовать: нравится 0 Проголосовать: не нравится

I don't like today's contest, slow judging and exhausting problems :(
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Мда, на последней секунде лёг сервер, при отсылке C, печаль.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Контест завершен, можно обсуждать.

Ну что ж, кто как делал С, есть варианты, кроме прекалк+теорема Ферма?

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Очень интересно, как делать B на Java. Естественно, без суффиксных структур данных =)
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Хеши. Неужели на джаве TL?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    А почему без суффиксных структур? Никто ведь не заставлял писать суффиксный массив за NlogN. Отсортировали тупо влоб суффиксы да и все. Помоему это проще чем всякие хэши.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Что ж так памяти то пожалели?))
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    В какой задаче?
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Сdiv1
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Мне на прекалк хватило:)
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          То есть тупо каждое хорошое число храним?
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Нет. на это не хватит Source limit
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            Храним ответы с определенным шагом, остальное досчитываем вручную.

            По ТЛ вроде бы заходит. Главное, чтоб багов не было:)

            У меня шаг 100000.

          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Считаем количество хороших чисел на интервалах длиной 100000, загоняем в константы, отрезок разбивается на 3 части - кусок слева, кусок справа, и объединение отрезков, для которых предпосчитан ответ. Куски слева и справа длиной до 100000, по ним проходимся, считая в лоб.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
I have another question. Why penalty for wrong submission isn't counted when program fails pretest 1, whilst it is counted when it fails another pretest from the statement?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    It is as a rule in round format.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Can you give me the link to this rule? I can't find it. And if there really is such a rule, what is the point of it?
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        You gain no penalty for sending wrong file or not commenting freopen(...), or even printing debug output.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        I was under the impression that you were only penalized if your previous submission passed all pretests, and then you resubmitted another solution after that. The rules from the link seem to support that interpretation:

        "You may resubmit the solution at any moment, but it may reduce your score. It happens if resubmission is successful (i.e. passes all the pretests + previous hacking attempts). In this case, the previous successful attempt would be considered as a reason for penalty"

        So has this rule changed?
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          No. What the rule says is this: if you ultimately submit a failed submission, you obviously do not gain any point. If you ultimately submit a successful solution, the points you should gain from this submission will be reduced by a fixed number of points (a penalty) for each solution previously submitted ; the only exception is a submission that failed the first test case (for the reasons cited above).
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Я в С отправлял большой файл, а система меня игнорировала и не выдавала никакого вердикта. Почему так?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Aie... Bad contest for me too. And the slow judging was really bad for advance quickly on the contest...
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А кто-нибудь умеет объяснять почему итеративный метод в D сойдется, когда все вероятности остаться маленькие? У многих видел в решении просто итерироваться пока не надоест.
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    бамбук в 22 вершины, ставим чуваков в концы и все pi = 0.99
    мало у кого такое зайдет)
    ну у меня всего 1 взлом на этом, но должно ловить итерирование
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Это вообще не должно работать толи при p_i меньше 0.5, толи больше. Но как решать по другому, и быстрее, чем за 226 вещественных операций, я не понимаю.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        yaro, например матрицу обратил.
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        Есть такой факт из теории марковских цепей, что для какого-то их типа(кажется, эргодических) существует вектор x такой, что Ax = x, и притом единственный(A - матрица, соответствующая цепи).
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Да, вектор стационарных вероятностей. 
          • 13 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

            Мне кажется, что я бред написал. По-моему, любое распределение вероятностей только по парам одинаковых вершин удовлетворит написанному уравнению.
            • 13 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              И тем более, что стационарное распределение не зависит от нашего исходного, это как минимум можно заметить по второму тесту
              • 13 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится
                Ну это следует из свойств цепей Маркова. В каждом состоянии нас интересует лишь предыдущее, то есть с экспоненциальной скоростью мы "забываем" про начальные вероятности.
            • 13 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится

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

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Ya ,today's contest had some tough questions .I wasted all my time on Question E.Thought I could solve that.
All prime numbers of the form 4n+1 qualify for it(and 2 also) .But I was getting Time limit exceeded!!!
  • 13 лет назад, # ^ |
    Rev. 4   Проголосовать: нравится 0 Проголосовать: не нравится

    But what do you use for those prime numbers? A function "is_prime" who is a little as:
    bool is_prime(int n)
    { for(int c=2;c*c<=n;c++) if(n%c==0) return false; return true; }

    If yes, it's slower than calculate alls numbers prime, no?
    vector<int> list_prims;
    void precompute(int n)
    {
      list_prims.push_back(2);
      for(int c=3;c<=n;c+=2)
    {
     for(int c2=0;c2<list_prims.size();c2++)
     if(c%list_prims[c2]==0) goto end;
    list_prims.push_back(c);
    end:;
    }
    }

    I don't know if what I said it's stupid, I have not calculated the complexity of the second fonction. But more we have a big number n, more there is space between two number prime...

    Ps: I have Time limit Error for the pretest 4, so it seems to not be the good solution.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Hey bro,same situation here...waiting for the editorial...nice problem anyway...
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А в D 300 итераций должно проходить?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    тот же вопрос для 10^6 итераций)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Т.е. пересчёт всего за квадрат? Как это сделать?
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      эм... а как 10^6 итераций пройдут по времени???
      Впрочем, худший тест - явно то что написал сверху Саша, так что проверить можно.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Очевидно, матрицу в степень 2^k возводить
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          У меня на яве 16-ая степень считается уже полторы секунды, получил WA на претестах :(
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Кстати мб можно было вместо возведения в степень просто решить систему Ax = x
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          ага, а вообще надо было ставить 2^40 итераций т.к. при запуске работало 0.4 сек, но почему-то кажется, что и 2^20 хватит.
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Так.. чето я туплю. Можно подробнее какую матрицу?
          • 13 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

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

            Upd. Вначале строил матрицу размера (22^2)на(22^2), но т.к. она довольно большая, то получалось засунуть слишком мало итераций, но использовав фичу, что нам нужна неупорядоченная пара вершин, сократил ее размер до 243на243, что уже позволило впихнуть 80 итераций, надеюсь, что хватит.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    А 300 итераций - это сколько физических ходов: 2^300 или 300? Если таки 300, то думаю что не пройдёт.
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Fail, я ноль в тесте забыл :D
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    в лоб за корень? НЕ ВЕРЮ!
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Всё ок, чуда не случилось.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Тоже чё-то не верится даже решето вроде не успеет досчитаться
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Решето успеет досчитаться за 5с, даже если оно на vector<bool> (претесты зашли у меня за 4170, считал сразу везде до конца
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Память считал?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Problems C, D ( Div. 2 ) were too heavy on implementation
I guess my opinion right now can't be really true, as I did really bad :-/
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Not really. Specially if you use STL for C, D. The "find" function of class string in C++ really speedens things up and helps in a nice and clean implementation. (Though i made a very dumb mistake in D :( )
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Как сдать C div 1 без прекалька? Решето по идее таймит.

P.S. Когда начнется тестирование?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Thank you for one more nice contest !! Clear and short statements, unrelated problems, I like it..
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
What is happening with the system testing? :(
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
plz plz .......unrated :(
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Что это только что произошло? О_о. На момент окончания контеста у меня задача B была сдана, и никаких взломов по ней не было. Сейчас появляется надпись
01:10:58  Решение взломано участником AndrewLazarev
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    AndrewLazarev придумал настолько крутой тест, что одно из наших 11 решений упало на нем по TL. Поэтому взлом не прошел сразу. После конца контеста мы разобрались и перетестировали взлом.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Жалко, что так вышло. Возможно ТЛ пройдёт простое хеширование, а не двойное.
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

А в C можно было просто сжать в 8 раз, и все заходило?
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Такая реализация у меня таймила. В комнате все сдали массив констант. tourist тоже.
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится


  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    У меня сжатие в 4 раза прошло (плюс еще некоторые оптимизации по времени).
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Интересно, много народу подбирало тесты, которые валят хеши? Я даже при написании B добавил туда антивзлом, но, видимо, никто этим и не страдал. В руме было куча решений, к которым минут за 10 подбирается тест, но никто так и не трогал их. Правда решение с основанием 100, хеширующее по модулю 2^64 валилось просто, а вот с основанием 127 уже не успел подобрать.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Сколько же у вас тестов? Видел 335-й. Вообще не жалеете участников!
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А правда ли, что все так тормозило, потому что автоматически добавлялись взломы? А то тестов как-то очень много. Или это пока еще в стадии "когда-нибудь наверное будет"?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
this is why system testing is very slow.. 300++ testcase for problem A div 1.. is that necessary ???
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    A div1 is lengthy and I was confused and locked it in a hurry, only to not be able to re-submit again :(
    So, a sentence with just one word which is a verb should give "NO", isn't ? I'm missing something from statement. Could some one point out that. Thanks.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      ok, found it.. I missed reading this rule "A sentence is either exactly one valid language word or exactly one statement. " :(
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      It should be "YES" because sentence is word or Statement(that should contain a noun)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      One word can any part of speech.

    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      No, it shouldn't give "NO". The definition of a sentence is: "either exactly one valid language word or exactly one statement." So a valid word is enough. That cost me a lot of submissions :-/
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
       a statement with just one word which is a verb should give "YES".. verb is a valid word, so it's a valid sentence..
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Shit, miss that. Don't understand this one word rule. If got then may be for the first time top 10 :( Bad luck
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
I can't understand the statement of pB(div 1) very well.
What's the output of the input below?
2 or 3?

acdbadcb
a
b
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
It's much annoying to stare at "In queue "... :(
Hope, proper steps will be taken :)
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
зачем было в B div 1 ТЛ-ить использующих сет?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Я верю, что если поставить 1000 или ослабить тесты, то начнет заходит куб хорошо про оптимизированный.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Можно было бы ТЛ приподнять. Думаю, можно подобрать ограничения и ТЛ так, чтобы сет заходил, а куб  - нет.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
УХ! Как хочется это сказать... Вот оно подходит... Прямо уже близко... Контест - говно! Самое большое говно за долгое время. Хуже него не было уже давно. И угораздило же ему оказаться аккурат после очень успешного (на мой взгляд) контеста от Димы и Жени Соболевых.
Задача А - идеальный пример задачи, которую нельзя давать на Codeforces. Задача для тех, кто посреди ночи любит аккуратно написать кучу ификов с кучей констант (ммм... особенно строковые... обожаю!). Да и еще 360++ тестов на ней. Задача B - безыдейное говно, которое дает преимущество тем, кто любит толкать хеши. Задача С - тем, кто любит отправлять предпосчитанные массивы. Оставшиеся две даже читать не стал.
PS: Все, кто несогласны, просто ставьте свои минусы этому комментарию. Отвечать в этой ветке я не буду.
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Во многом согласен.

    Хотя в целом - было интересно. Главное - что не было явных фейлов с задачами (вроде "авторское не учитывает...").

    Первая - пока писал ее, обматерил соседей по комнате, автора задачи и весь АСМ вообще. Но когда написал - получилось довольно просто и красиво, хотя и много по коду:) На финалах ведь тоже бывают задачи на скучную реализацию?..

    Вторая - а она вообще решается строго правильным алгоритмом в пределах ТЛ? В моем понимании, при таком ТЛ таких ограничениях на вид инпута почти нереально подобрать параметры хеша, которые не будут заваливаться хоть одним теоретически возможным тестом. Другое дело, что все такие тесты перебрать нереально (хватает нам уже 360 тестов по первой). 

    Третья - прекалк есть прекалк... Немного не в АСМ-стиле, но бывают и такие. Ведь решаема и не прекалком, просто труднее. Мне не понравилась разве что тем, что у меня на диске С было 2.5 гб свободной памяти, в результате после выполнения жестоко неоптимального прекалка ноут сильно повешался, надо бы сейчас перезагрузить.

    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      "Главное - что не было явных фейлов с задачами (вроде "авторское не учитывает...")."
      К сожалению, были. Оба моих взлома получили вердикт "OTHER". Мне потом объяснили, что это одно из проверочных решений (помеченных как правильное) упало.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Задача B очень плохая, в ней не сумели подобрать нормальные ограничения. В результате мы видим, что у половины падает set по тайм-лимиту, а у меня вот памяти не хватило. Печально все это.
    Про A и C тоже согласен...
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Ну в запуске можно было протестировать и понять, что проходит а что нет, так что задача от этого плохой не становится.
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        Я использовал 3 хеша одновременно, и это, конечно, не влезло по памяти (да, забыл проверить, когда ответ около миллиона). А одиночные хеши ловятся на коллизиях...
        В общем, сумел сдать только когда считал отдельно для разных длин строк. Хотя, с другой стороны, хорошо, что авторы меня к этому приучили...
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          На самом деле, может пройти и обычный хеш, и хоть мое решение на удивление прошло все тесты, но это лишь удача.
           p =31, MODULO = Long.MAX_VALUE
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            А это на джаве?
            У меня двойной хеш из двух интов свалился по памяти (первая посылка в дорешке), почему же один long тогда проходит?
            • 13 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              Не нашел вашего решения.
              Вот это  может словить TL вообще говоря, а вот  это AC в любом случае на системных тестах 
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
That is one damn slow systest. 1+ hour and counting
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
In my opinion,it is not good to set many string tasks.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
I hope that judges have solutions without using hashes for Petr#.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    why ?
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Because they need hash function that for each possible string from the statement returns different value (f(x) != f(y) if x != y) otherwise the solution is incorrect.
      I think that solution which uses suffix array is very valuable, but I would also like to see other non-hashing solution, because suffix array isn't a proper method for B level. I mean such a solution that can be implemented in java and pass all systests without any pruning.
      Once upon a time during a contest I discovered 2 different strings of the same length (<= 100), that made my hashing function failed and it was rather a good hashing function, because I solved many tasks using it. Since then I think that hashing is a good method for ACM-ICPC style, when I have immediate result, but if I can't correct my mistakes during a competition, then I don't use hashing.
      I also believe that writers are aware of the fact that using hashing isn't a 100% correct solution and give such time limits, that you can solve this problem with methods appropriate for lvl B.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Okay.
        What do you think about Prob C DIV1. ?
        I see some people hard-coded primes in the intervals of 10^6 or so .
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        It seems tourist didn't use hash, maybe you can look at his program
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    What to say, I am tired of solving just 1 and 2 in Div2.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Yes, there is non hash solution for Petr#. Editorial will be posted soon.
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Yes, we can use idea of Trie and get rid of hash
    My AC code from practice http://ideone.com/hMmmm

    Edit: hmmmm :p
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Will space complexity be too high? A trie of length L with an alphabet A requires O(|A|L) am I right? Maybe it can be implemented in another way?
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        No, you can allocate memory dynamically, then you will just need O(sum of lengths of words in trie).
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        I hardly used Tries before, so I came up with that naive implementation. May be we can use a vector (c++) and create only necessary child links, like I modified here http://ideone.com/7MlnI . Run time increases and space complexity decreases, by constant factor.

        Can some give a rough idea on how to still reduce space ( if at all we can ).

        Thanks.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Кто-то закодил решето Аткина для E2 / C1?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
У Гены фейл... х2... Как говорится, "это какой-то неправильный контест" :)
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    2 - это какое-то неправильно простое. Из-за него вечно проблемы.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Много сегодня минусов на финалках, не так ли?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Видимо, у меня слишком хороший комп. Или у жюри - слишком плохой. Но у меня на рабочем ноуте D на макстесте нисколько не ТЛится.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Easy looking problems caused lots of problems.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Контест порадовал тем что я крупно слил, есть над чем работать.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Not sure why my Div 2 E timed out on test 12 - it spends the same amount of time on any test case (builds all "interesting" numbers for each test case, no matter what l,r are)
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Case (heh) in point:

    Test: #10, time: 4510 ms., memory: 96140 KB, exit code: 0, checker exit code: 0, verdict: OK
    Input
    100 152262461
    Output
    4281819
    Answer
    4281819

    Test: #11, time: 4720 ms., memory: 96140 KB, exit code: 0, checker exit code: 0, verdict: OK
    Input
    200 299399868
    Output
    8110312
    Answer
    8110312


    Test: #12, time: 5000 ms., memory: 96140 KB, exit code: 0, checker exit code: 0, verdict: TIME_LIMIT_EXCEEDED
    Input
    300 99050033
    Output
    2854733
    Answer

    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Very unrealistic and irrelevant constraints in my opinion.
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        I would not go that far but, to be honest, I haven't seen a code optimization problem in a contest in a while (meaning, there hasn't been a need to reduce the constant factor).

        I did remember seeing Yarin's Sieve a while ago,  but I never really had use for it - this time I googled for it and implemented it in Java. For other's benefit, here it is (my code passes if I inline the calls to isPrime(), which is a shame):

        [code]

        /*
        * Convert Yarin's Sieve to Java... bleh :)
        */

        private static final int MAXSIEVE = 300000000;
        private static final int MAXSIEVEHALF = MAXSIEVE / 2;
        private static final int MAXSQRT = (int) (Math.sqrt(MAXSIEVE) / 2);

        private byte[] a = new byte[MAXSIEVE / 16 + 2];

        private void init() {
            Arrays.fill(a, (byte) 0xFF);
            a[0] = (byte) 0xFE;
            for (int i = 1; i < MAXSQRT; i++)
              if ((a[i >> 3] & (1 << (i & 7))) != 0)
                for (int j = i + i + i + 1; j < MAXSIEVEHALF; j += i + i + 1)
                  a[j >> 3] &= ~(1 << (j & 7));
        }

        private boolean isPrime(int n) {
            return (a[n >> 4] & (1 << ((n >> 1) & 7))) != 0;
        }

        [/code]

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
я конечно извиняюсь, но них___ себе 360 тестов! может стоит все таки брать качеством, а не количеством тестов?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Изначало тестов было ~100. Однако позже было решено покрыть полностью случай из 1, 2, 3 слов (на случай багов), поэтому вышло многовато-то тестов.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      360 тестов - это по-вашему просто "многовато"?!))) Да это ...
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Is there any solution for the problem B of  Div 1 without hash?, I did something with trie but I got Memory Limit on test 76.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Liked today's problems :)
waiting for editorial to see the non-hashing solution for Petr#.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
I dont know what stopped me for coding the solution for Div2 E.
I thought to myself..at 1:30(hh:mm) before end of contest."ahh..sieve...surely it will TLE " ......
Again at 1:00(hh:mm) ..."yeah..sieve must TLE  ...the limits are very high ... "
Again at 0:30 ..." n^(1+k)  must time out [0 < k < 1]" ...

But when I see AC solutions they used sieve only... :(


13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Does problem petr# have a solution better than O(n^2)  ?? ( n = size of string)
 
I get Time Limit on test 21 !!! and my solution is O(n^2) !!
Did anybody has this problem too?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Спасибо всем за замечания и отзывы.
Если кому интересно, то мое мнение по поводу задач.
А. Действительно, задача исключительно на внимательное чтение условия и реализацию. Лично я сам редко хорошо воспринимаю такие задачи, однако, тем не менее, они есть, и могут встречаться на отвественных стартах, поэтому они имеют право на жизнь. Тестов было так много, потому что очень много мелких случаев, которые могут фейлится. Возможно действительно, не лучший формат контеста для таких задач.
В. Хеши действительно возможно ломались. Это оставлялось на взломы участников, поэтому model solution был реализован без хешей. Существует и решение через суффиксный массив. По поводу TL c сетами - есть авторские решения, которые используют сет (причем как на Java, так и на С++) и проходят системные тесты. 
С. Наши решения (авторов) не предполагали прекалк вообще, хотя прекалк - мощная штука. У нас были решения с помощью блочного решета Эратосфена. Вообще же, самое, на мой взгляд, классное решение - у Romkaза что ему большое спасибо.
D. Решения у всех упали в основном из-за точности (малое число итераций), либо TL(большое число итераций). 
Если у кого есть какие вопросы по Е, то напишите их.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    В D оказывается, если в умножении матрицы после вычисления очередного элемента ответа написать строчку вроде

    if (res[i][j] < 1e-30) res[i][j] = 0.0;

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


    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Это похоже на случай с 500 с TCO-2011, первый раунд квалификации. Там у многих были похожие проблемы.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Ну опять видимо денормализованные числа.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      И не просто в несколько раз быстрее. 15 итераций отрабатывают за 550 мс, а 16 итераций не проходят.
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      Шаманство. Но кажется, всё что прошло было Гауссом, а не итерациями.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Кстати, по поводу В. Говорят тут все - сет падет по тл, даже без него впритык.... Думал, у меня где то 1+ время выполнения.

Теперь посмотрел.

У меня решение работает за 0.2 секунды. При том, что там cin, вектора (которые лучше все же заменить на массивы...), и еще много неоптимальных вещей, на которых еще пару сотых теряется.

Так что... Если написали весьма неоптимальную ерунду - нечего жаловаться. У меня тоже первое решение строки сравнивало по определению - оно на моем ноуте работало секунд 40. На СФ может быстрее, но явно не 2 секунды. Я ведь не жалуюсь, что такое дает ТЛ.

  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    set<long long> s;

    for(int i = 0; i < n; ++i)
          for(int j = 0; j < n; ++j)
               if(something)
                      s.insert(f[i][j]);

    Падало вот такое. Тут всего n^2 вставок в сет.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Is there a way to know the test case when a solution is hacked?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    I think no . . . we can't know test case that use to hack

    but i can tell you that i use
    ababab...... 1000time
    a
    b
    to hack you
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    You can do it after contents, using hacks tab
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Can problem B (div.1) be solved by hashing? If yes, what kind of hash function should you use?
  • 13 лет назад, # ^ |
    Rev. 4   Проголосовать: нравится 0 Проголосовать: не нравится

    I used usual polynomial hash, 


    H(S) = (s1 + s2 * p + ... + sn * pn - 1modQ, where

    p = 31, Q = 263 - 1.

    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Is it still possible to construct a counter-example for it just like for most functions? 
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        In theory of course yes, but I do not know such an example. However, hash solutions were not main solutions from jury this time.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
В задаче (В див1) надо двойной хеш?

  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    У меня на джаве по памяти свалилось, может, на C++ заработает
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      там просто тест 24-ый прикольный я его не учёл. А то бы прошло
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Не подскажете, в чем фишка 24 теста? У меня сейчас тоже не проходит, в чем бага не понимаю =(
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Там просто большой рандомный тест, но длина префикса и/или суффикса превосходит длину исходной строки.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Двойной хеш никогда не надо.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится


13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
У меня возникла проблема, с тем что при запуске теста, по которому моё решение тлит(C задача, 5 сек) я вижу что оно работает ровно 2 секунды. Решение на си, пробовал разные версии компиляторов, эффект тот же.
Кто подкинет идею в чем может быть дело?
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

(On Problem C)
It seems that I discovered a serious bug in Codeforces. . . . .

Submission judged with MLE:
  1. const int N = 3e8+5;
  2. bool b[N/2]={0};

Submission judged with AC:
  1. const int N = 3e8+5;
  2. //bool b[N/2]={0};
  3. vector<bool> b(150000020,false); // why no MLE?! CF has bug in counting memory?!

I suppose the authors intend not to accept a solution with O(N) memory. . . . right?

I understand now. :)
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Странный раунд, получилось так, что, решив всего одну самую лёгкую задачу, сильно прибавил в рейтинге. Кстати, самому понравилось, как её решил - переводил слово в пару "часть речи - род" и запихивал в вектор. Ну а дальше одним пробегом проверял на одинаковость рода, а другим - оставшуюся часть задачи. Тем самым избежал проблем.

Зато в задаче B отхватил их сполна - сначала строил по строкам префикс-функции, потом по их значениям определял строки... Затем увидел, что нужно найти количество без повторов - попытался как-то поддерживать текущую строку во вложенных циклах, использовал мап и метод удаления символов из строки. Раз 6 посылал с ошибками, но под конец всё-таки добил претесты. И уже после завершения контеста пришёл вердикт взлома Егором :)

Кстати, поздравляю его с неплохим результатом.

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

Ну и к авторам пару предложений:

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

2) Может, уже пора остановиться в написании условий про мальчика Петю и счастливые числа? :) Уже приелось, как мне кажется, хотя не столь важно.

  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    1) Вроде все учитывали, аккуратная реализация за квадрат на логарифм должна проходить.
    2) Ок, учтем)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      1) Речь как раз о том, что некоторые не очень аккуратные реализации с той же асимптотикой, по-видимому, не проходили. Задача B не должна быть такой требовательной, наверное.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      set<long long> s;

      for(int i = 0; i < n; ++i)
            for(int j = 0; j < n; ++j)
                 if(something)
                        s.insert(f[i][j]);

      Падало вот такое. Тут всего n^2 вставок в сет.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
I was wondering What does "Skipped" pretests mean?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    If you have sent N times a solution and each time you passed pretest, then it will show N-1 times "Skipped", until the last program you sent: that will be avaluated against final tests.
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

A sentence is either exactly one valid language word or exactly one statement.

note like this in A-Div1 , C-Div2 very important it should be in bold font. too many Div1 and Div2 coders get WA @pretest 4.

especially, in low score problem with long statement.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
i am stacked in a peculiar situation here. my code for the problem A gives correct out put in my computer, but fails for the same sample tests [sample 1] in the judge. looking for ways to out of this worst situation and want to know from the experts whether the problem is with my code, or my PC or with the JUDGE. tnx in advanced. I AM WAITING AND WAITING, FOR ANSWERS.

my code for problem A:

#include<iostream>
#include<math.h>

using namespace std;

int main()
{
//    freopen("sam.txt","r",stdin);
    int k,l,i;
    cin>>k>>l;
    for(i=1;;i++){
        int temp=pow(k,i);
        if(temp==l){
            cout<<"YES"<<endl<<i-1<<endl;
            return 0;
        }
        if(temp>l)break;
    }
    cout<<"NO"<<endl;
    return 0;
}
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    PS: please run my code in your PC and submit it in the JUDGE to see whats happening truely.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      nobody is giving any answers here. in the mean time PEIN_original gave me a message telling that he ran the code in hic PC, which gives correct output for sample test 1. so where is the problem with the judge. i am just going mad .... SOMEBODY PLEASE PLEASE PLEASE find me way out.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    the problem in this line
            int temp=pow(k,i);
    when i>30 .. temp overflow of int ,, for this make temp long long .. and pow(k,i) has error percesion error when casting in (long long) it rounded down so it doesn't equal to the actual value .. so add 0.5 before casting so this line should be
            long long temp=pow(k,i)+0.5;
    hope you got it :)
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
The problems were awesome. I have just one question about div2 A ... i wanted to solve it using logarithm. obviously
  1. n = math.log(l,k)
  2. if n == int(n):
do stuff
is not the way to go. I tried if n-int(n) < eps where eps = 1E-13... it did pass test that failed before but it still gives me a wrong answer. How would i make that right? or is idea using logarithm just plain wrong?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    i think it's possible n-int(n) will be wrong too. suppose n = x. if i'm not wrong sometimes it will be saved as (x-1).99999999997. so int(n) will be x-1. (not so sure)
    you should have tried   abs(n-floor(n)) < eps  ||  abs(n-ceil(n)) < eps     just to be sure.
    but for problems like this i always follow KISS rule!  Keep It Simple Stupid.
    i just used this:
    while(n%k==0) n/=k;
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Товарищи, у кого за сколько проходит решение B(div 1) на С++ за O(n * n * log(n)) ? У меня за 1.980 сек, то есть впритык. При этом решение максимально оптимизировано.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    У меня 0.2. Перебираю O(N) длин, для каждой считаю O(N) хешей, которые сортирую за О(NlogN).
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Ясно. Я завожу массив сетов для всех длин, закидываю в сеты соответствующие хэши. Получается, причина большого времени - сет достаточно медленный, и там где можно, надо использовать вектор.
13 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

У многих в решении задачи C есть какие-то константные массивы, например:
 const xd:array[1..6000] of longint = (
  1. 2550, 4784, 6907, 8978, 10997, 12981, 14945, 16901, 18819, 20732, ...
  2. Подскажите пожалуйста, как их можно получить.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Перебором вычисляете тупо и записываете в один файл в виде write(x, ', '); По крайней мере я так делаю)
    • 13 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится
      А что здесь перебирать? Простые числа или их количество?
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Перебирать a и b
        • 13 лет назад, # ^ |
            Проголосовать: нравится +1 Проголосовать: не нравится
          Объясните, пожалуйста, подробнее.
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Решим задачу на локальном компьютере следующим образом.
            Сделаем массив ans[], где ans[i] = {количество подходящих нам чисел на отрезке [i * 100000, (i + 1) * 100000) }
            Всего в массиве получится 3000 элементов.
            Тогда, как мы будем обрабатывать запрос [l, r] - поступим стандартно, F(l, r) = f(r) - f(l - 1), а f(x) вычислим следующим образом. Найдем k - частное от деления x на 100000 ( нацело), прибавим к ответу ans[k], а по оставшимся числам пройдемся вручную, например Миллером-Рабином, проверяя их на простоту.
            • 13 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              Можно немного проще, на мой взгляд, сделать: ans[i] - ответ для отрезка 1-i*1000000. Ответ на задачу равен ans[r]-ans[l-1], значит будем искать отдельно на отрезке 1-n. Найдём самое большое i, для которого і*1000000<n. Ответ сделаем равным ans[i], а дальше решаем задачу для отрезка i*1000000+1 - n брутфорсом и всё, что нашли прибавляем к ответу. Можно было считать  константу с шагом 10^5 или даже 10^4, но это смотря у кого какой брутфорс:)
              • 13 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится

                10^4? Маловато, наверное, т.к. сорслимит в 64 кб... При 30000 промежуточных ответов... Запихивать каждый ответ в 2 символа - не представляю пока, как.

                Следовательно, минимальный шаг надо немного поднять.

                • 13 лет назад, # ^ |
                    Проголосовать: нравится 0 Проголосовать: не нравится
                  Возможно. Я просто не знал точные рамки сорслимита. 
                  • 13 лет назад, # ^ |
                      Проголосовать: нравится 0 Проголосовать: не нравится
                    Я его сам узнал лишь при подготовке контеста)
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Я за минуты 3 сгенил за N*logn. Это делается либо логарифмической проверкой либо решетом. Второе даже за Nloglogn или за линию. Но линия будет тормозить из за памяти.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
I have no idea to solve Problem E in div2! Call for help!!!~
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
anyone can tell me the solution of the problem E (div 2)? tks!
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Не понимаю одного: что задача Е делает на это месте? Там, по-идее, должна быть задача, которую мало кто может решить.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Добавлю от себя. Контест получился довольно неординарным. На предмет "плохих" или "хороших" скажу следующее: задачи нужно решать, независимо оттого, какие они. Для меня этот контест лишний раз выявил мои слабые места, над которыми надо работать. Пожалуй, единственное, что меня очень огорчило - так это скорость работы системы проверки.. Надеюсь, штаб в скором времени решит эти проблемы! Всем успехов!