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

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

Всем привет!

До Codeforces Round #135 (Div. 2) осталось всего несколько часов. Вся подготовка раунда сосредоточена в городе Петрозаводске, где проходят традиционные сборы по подготовке к ACM-ICPC. Сегодня здесь выходной, многие поехали на экскурсию в Кижи, а я с Gerald-ом готовим для вас контест. Виталик Aksenov239 Аксенов не остался равнодушен и предложил свою помощь, за что ему большое спасибо. Спасибо Маше Delinur Беловой за перевод условий.

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

Всем удачи и удовольствия от раунда!

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

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

С нетерпением жду начала раунда. :о

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

Будет интересно. А на вопросы вы же будете отвечать?

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

Люблю число 239 в нике. Оно говорит о порядочности и уме.

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

    По моему, оно говорит о том ,что человек учился(тся) в 239 и вроде как все=/(кэп)

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

будут ли интерактивные задачи? :)

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

I got report on my email about this round and there was writen that contest was held by rules of codeforces not dynamic scoring.

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

Good luck everybody! May the best will win! Let's hope for an interesting problem set and a lot of hacks!

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

Посоны не ездите в Кижи там на комете укачивает сильно а в порту вода горизонтально на тебя летит я зонт поломал ноги промочил завтра заболею сдохну в финал не пройду

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

    Мой желудок сегодня открыл счёт среди участвовавших в поездке. Чтоб я ещё раз на этой корыт^W комете катался в шторм.

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

Скажите пожалуйста , а разбор задач после раунда будет?

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

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

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

А мне понравилось

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

hints for problem D needed :D please help :)

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

    Dfs from any vertex, then ansver for vertex is number of edges goes up in path from root to it + all other edges, that goes down

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

    1) At start find the result for the first node using bfs. 2) Again, using bfs for all neighbor nodes result differs always in 1 (+ or — depending on direction of the edge) -> count result 3) After you counted result for all nodes I believe it's obvious

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

How to solve E?

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

Отличный раунд, спасибо :)

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

Hi all , I have solved 4 problems (A,B,C,D), but i have spent about an hour for task B ,so couldn't get enough points: It will be fine ,that for counting points we use the time participant has spent ( counting from his/her first opening that task) , and not to use the time counted from begining the contest : Sorry for bad English :D

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

    It's not good for system because now you can read the task and not solve it, and return to this task later.

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

Не подскажете, почему взлом генератором на C# возвращает вердикт "Неизвестный вердикт:GENERATOR_CRASHED" ?

Пытался взломать задачу C, параметрами 500000 2 AAAAA... (500000 раз)

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

А чем, кроме отсутствия необходимости отвечать на довольно простой запрос, задача Е отличается от задачи D c 68го раунда?

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

    может быть я ошибаюсь, но если у нас будут машины стоять на парковке так: ....XX.....X.. и приедет новая машина, то мы должны выбрать не самый длинный.

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

      Ну, то, что мелкими деталями реализации — это понятно. Еще в задаче этого раунда первые 2 машины по краям встают. Я имею ввиду в принципе

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

Одними из распространенных взломов по задаче С были:

3 2 AAB

или

4 2 AABB

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

I think systest is so slow today. Maybe it causes from to many testcase on problem B

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

I think the problem E should solve via Interval Tree. For each node in the tree, we store min parked space, max parked space, max interval length without parking and that maximum interval.

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

Slow system :(

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

не успел отослать С.

Вот моя идея:

если k=2 тогда найдём первую пару, которая стоит неправильно.

и рассмотрим два случая:

1. первый из пары стоит правильно 
2. вторый из пары стоит правильно

Выберем наименьший а если k>=3 то допустим нашли неправильную пару например ABB, то среднюю букву мы всегда можем поменять на третий цвет.

я прав?

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

    на счёт k = 2, мне кажется проще проверить, что лучше ABAB... или BABA...

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

    Если во вопрос случае менять дальнюю букву, то верно

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

    для k>=3 и строки ABBB такой алгоритм даст неправильный ответ

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

      почему? он даст ABAB

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

        Значит ты непонятно его объяснил ибо я тоже понял что он вернет acab или что то подобное

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

        ну если под "средней буквой" в "неправильной паре ABB" понимается последняя, тогда да :)

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

          да извиняюсь) под средней понимается последняя)

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

Как решать A ?

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

    Считаешь количество различных букв, если количество какой-то буквы не делится на K, то выводишь -1, иначе пробегаешь и добавляешь в строку все буквы N раз, где N = целочисленное деление количество буквы на K. И эту строку повторяешь K раз

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

    Посчитаем count[ch] — количество символов ch в строке. Если для каждого ch count[ch] кратно k, то выводим k раз строку, состоящую из букв, каждая из которых выписана count[ch] / k раз.

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

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

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

    Считаем кол-во букв. Если кол-во какой-то буквы не делится на K, то выводим -1. Иначе k раз выводим все буквы от 'A' до 'Z' кол-во этой буквы деленная на k раз.

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

I used abs() function in my C++ code in problem B where it should get the absolute value between to long longs, but actually this caused a Wrong Answer in the final tests. When I removed the abs() and made it manually, it got accepted in the practice! How come something like this happen?

BTW, labs() don't work too.

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

    There no abs function for long longs in c++ start, but as far as I remember one of msvc++ and g++ support it

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

I used abs() function in my C++ code in problem B where it should get the absolute value between to long longs, but actually this caused a Wrong Answer in the final tests. When I removed the abs() and made it manually, it got accepted in the practice! How come something like this happen?

BTW, labs() don’t work too.

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

Опять я потерял один знак равенства! :-( WALL

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

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

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

Here is my submission to problem B: 2054290. It gives correct output on my system as well as ideone (8JSXv). But it fails on codeforces judge (for test case 11). Is there some problem with my code ? Comments are welcomed!!

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

Here is my submission to problem B: 2054290. It gives correct output on my system as well as ideone (8JSXv). But it fails on codeforces judge (for test case 11). Is there some problem with my code ? Comments are welcomed!!

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

    The problem is in using of pow() with integers. Try the following code in custom test:

    long long int a=10, t=1;
    while(t<3) {
        long long int test=(long long int) (pow((long long int)10,t));
        cout<<test<<endl ;
        t++;
    }
»
12 лет назад, # |
  Проголосовать: нравится -13 Проголосовать: не нравится

Выпендривайся перед контестом @ Получай -84 к рейту после контеста

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

in problem B, it says--

Print the required price — the maximum price that ends with the largest number of nines and that is less than p by no more than d.

what does that mean??

output should >= (p-d) and <= p

or >= (p-d) and <p

confusing!!

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

i am getting TLE for Problem C.

here is my try: http://codeforces.com/contest/219/submission/2067867

i am trying to solve it with DP..

any suggestions to optimize it ???

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    • Don't use recursion for dp. Do it iteratively.
    • Avoid using pure cin/cout for large input data (use either c-style input (fastest way) or disable syncing with stdio)
  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    The problem is your DP complexity. It is 100000 * 26 * 26 ~= 10^8 in the worst case. One good point to think is "Do you really need a DP for all testcases?"

  • »
    »
    4 года назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
    #pragma optimization_level 3 
    #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3") 
    #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx") 
    

    Add this to the start of your code. Here is my submission which ran on 1934ms : 78488193