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

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

Всем привет!

Завтра в 19:30 MSK состоится Codeforces Round #240.

Это наш первый раунд на Codeforces и мы надеемся, что он вам понравится. Задачи были подготовлены авторами: Amir Keivan Mohtashami (matrix), Farbod Yadegarian (FarbodY) и Gerald Agapov (Gerald).

Традиционно благодарю MikeMirzayanov за системы Polygon и Codeforces, а также Maria Belova (Delinur) за перевод задач.

Желаем вам хорошего и интересного раунда.

Удачи!

Как обычно, распределение баллов по задачам будет анонсировано перед началом контеста!

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

div1: 500 — 1000 — 1500 — 1500 — 2500

div2: 500 — 1000 — 1500 — 2000 — 2500 (стандарт)

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

Div 1:

  1. fqw

  2. sankear (Единственный, кто решил задачу E во время контеста)

  3. Egor

  4. qwerty787788

  5. hos.lyric

Div 2:

  1. jzzhu

  2. SJTU_WengJian

  3. alcot

  4. LoveEvita

  5. huyifei

  6. NiuYiqiang

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

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

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

2 Iranian problem setters , that sounds great !

I wish it will be different and special round :)

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

I think there will be a matrix problem :)

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

is it only me that has received the announcement first time in Russian despite primary Language being English in codeforces?

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

I wish you all good luck and increase the rating

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

Do you know dibil power Ha ? this is 1000th dibil :D HURRAY DIBILS

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

i don't know how, but i'm registered twice for this contest!
EDIT: sorry the image i initially posted was too large, so here is link to image

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

Что то в последнее время с началом раунда какие то очень странные вещи происходят. Иногда высвечивает что осталось на 4 часа больше чем реально + при переходе на страницу с соревнованиями время начала стоит 23:30, потом обновляешь и все нормально.

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

Wish both Iranian problem setters, Amir Keivan and Farbod, Gold medals in this year`s INOI. Good luck.

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

Is the contest time 19:30 or 23:30?

Currently (at least for me), the time on the contest list is 23:30 and the counter shows that the contest starts in 6 hours...

Screenshot: http://koti.mbnet.fi/pllk/cf.png

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

Delayed?

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

hey, has the round been postponed by 10 minutes? i suddenly see 00:11:42 in the countdown!

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

Is the contest delayed ?

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

Let's hope it is not a problem like what happened in TCO yesterday.

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

Как обычно, распределение баллов по задачам будет анонсировано перед началом контеста!

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

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

Is that server downtime ? I saw "Codeforces is temporary unavailable" page several times just before some minutes.

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

wish a nice contest

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

    Что такое? Пишет осталось 4 мин, время проходит, и снова 4 мин, уже 3 раз.

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

      ok you're right

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

      Время до закрытия регистрации; Время до начала контеста; Второе время до начала контеста.

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

can we know the reason for delay?

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

last 30 seconds~~~~

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

In Problem B,I can't see the picture about "how much dollar a worker can get if he returns w tokens". Then what should I do?

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

LOL I think this is the first round I've encountered on CF that the English statement is correct instead of the Russian one.

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

    I have a guess:

    since the authors are Iranian then they wrote problems in English and then the statements have been translated to Russian ,during translating the mistake happened

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

    What? There were 8 hocruxes? And 8th was hidden in Tom's CF account? One more HP movie? Harry Potter and Codeforces account LOL

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

In problem B the image was so bad i made one wrong submission before asking a question to clarify that the expression was floor (w*a)/b , i had earlier thought it to be floor((w-a)/b)

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

    I too faced the same problem , and misread it floor ( (w-a)/b) instead floor( (w*a)/b) . Wasted 45 mins :(

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

Как решалась Б (див 2)?

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

    вывести (x_i * a % b ) / a;

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

      Блин.

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

      Ну или так :D

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

      Как вы получили такую формулу?

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

        Ну если как в примерах a == 1 то сколько можешь баксов взять столько и берешь, остальные жетоны оставляешь. А если "a" больше, то нужно уже вспомнить что просто остаток от деления это уже не количество жетонов а, ну не знаю, очки какие-то. А вот если разделить на "а" то получится как раз количество жетонов, которые остались.

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

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

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

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

      // cout << a/2
      int a = 6; int b = 1; 
      while( b <= a && 2*b < a ) ++b;
      cout << b;
      

      Я тоже подобное иногда делаю, когда формулы лень придумывать, ТЛ и не пахнет, а условие легко сформулировать) Но тут все же лучше было считать.

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

Why my solytion on problem C-div 2 gets TLE?


#include<iostream> #include<cstdio> using namespace std; int main() { int n,k;scanf("%ld%ld",&n,&k); int d=0; if(n&1){n--;d=1;} if(n>>1 > k){printf("-1\n");return 0;} else { int bn=n/2; printf("%ld %ld ",(k-bn+1),2*(k-bn+1)); bn--; int j=2*(k-bn+1)+1; while(bn--) { printf("%ld %ld ",j,j+1);j+=2 } } if(d==1) cout<<1000000000-1<<"\n"; return 0; }
»
11 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится

Nice statements... Easy to understand... :)

Hope to see you again as author.... :)

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

nice contest...

made stupid mistake in B which led to me wasting too much time...

hope to learn a lot from the editorials... :)

thank you to the problem setters!

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

Pretest 4 is pretty strong.

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

Annoying issue with printf: As suggested in the problem statement, I tried using printf to output the numbers for problem C, but I could not submit because of the warning. In the end I had to submit the cout version, which I am afraid might time out.

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

    are u referring to the warning which says to not submit solutions using the %lld specifier in C++?

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

    In fact, we do not have any problem now even if we use %lld on Codeforces.

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

    luckily for u, it passed. but only just (3447ms)! ;)

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

    You can use %I64d, CF preferred %I64d. I used it instead of %lld.

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

    I had the same issue. And it is really strange to have a warning with "lld" which is correct. And no warnings at all wile using "ld" and it seems like there is no situation when it could be useful.

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

      Previously there was a bug in MinGW, and %lld did not work — only non-standard %I64d did. Now it has long been fixed, but the Codeforces warning remains.

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

Liked the problems and the statements specifically, though I couldn't solve Div2 E, lol.

Would be really great if some corner and/or extreme cases were excluded from the pretests.

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

Ну блин, что это такое? Второй контест подряд Div.1 A какая-то стрёмная жадность, а Div.1 B — элементарная динамика, которую решает больше человек, чем А. Я не могу понять отношения авторов контестов к сложности задач(

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

    Скажите решение задачи А.

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

      Я решал так — будем заполнять всё парами, у которых gcd равен единице, это числа вида (x;x + 1). А первой паре сделаем gcd равным k - n / 2 + 1, чтобы в сумме было k. Ну и вывести  - 1, если n / 2 > k и отдельно рассмотреть случай n =  = 0.

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

      Жадность рулит. Первая пара — подбирается большое число и большое число*2 так, чтобы (k-большое число) = количеству оставшихся пар. Каждая оставшаяся пара — любые два взаимопростые числа. можно, например, просто простые числа перечислять. И надо не забыть про разные "особенные" случаи, типа неченого количества чисел, или когда число требуется только одно.

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

    А я думал что в B-шке нужно заранее для каждого числа предпосчитать его делители и забить в вектора, но раз проходит O(sqrt(n)*n^2), тогда я тоже не могу понять отношения авторов.

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

      что это за решение такое, там вроде очевидный n^2logn

      upd. а, кажется понял, дп в другую сторону

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

        Можно было просто перебирать делители каждого нового последнего числа до корня.

        Наверное, на n^2logn автора и рассчитывали, плохо составили тесты, что ли.

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

        Кстати, 6283465 какую сложность имеет? А то я пока от рекурсии к итерации плоховато перехожу.

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

        А можете привести решение? Не понимаю, откуда логарифм.

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

          dp[x][n] = кол-во посл-ей длины n с первым числом равным x.

          dp[x][n] = sum dp[y][n-1], y=kx.

          то есть одно dp[x][n] считается за M/x, а сумма n/i (i=1..n) как известно == nlogn (гармонический ряд). в итоге и выходит n раз запускается два цикла суммарно за MlogM

        • »
          »
          »
          »
          »
          11 лет назад, # ^ |
            Проголосовать: нравится +4 Проголосовать: не нравится
          for(int i=1;i<=n;i++)
          for(int j=1;j*i<=n;j++)
          

          Следует внимательно присмотреться вот к этому коду. Интересный факт, что, как сумма гармонического ряда, это в итоге потребляет O(nlogn) времени.

          Пример решения:

          6274315

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

            Вот этого факта про сумму гармончиеского ряда не знал, спасибо вам и Bugman.

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

      Ну для таких ограничений это нормально. А вот когда для n≤105 слегка оптимизированный n3 проходит, это веселее.

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

who can explain 4th pretest on B question(div2)?

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

C was very nice. I've just finished it now. Big + for the authors. Very nice problems !

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

Nice problems, I liked them.

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

Pretests were too strong. I don't complain though :)

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

Загружать Windows 8.1 за 2.5 часа до начала контеста — плохая примета.

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

    В принципе загружать Windows — плохая идея :)

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

      Вы намекаете, что у меня пиратка? Нет, windows у меня лицензионная и загружал я официальное обновление. Но в случае с пиратским софтом я с вами соглашусь :)

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

Can anybody help me guess why I have WA on the 7th test from Div1 A ? :)

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

Ну и тестирование...

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

I thought it's (w — a)/b for the whole contest and couldn't solve it. I noticed it's a multiplication after viewing some solutions :/

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

why is system testing taking so long today?!

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

Any hint for task D , DIV2?

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

    DP [len][last]

    for i = 1 to n for j =1 to k for next= j to k with step j DP[i+1][next]+=DP[i][j]

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

    it can be solved using dynamic programming. if u dont know about it, then first read up on it and solve 3-4 basic DP problems before reading below.

    we can assume that dp[i][j] be the number of solutions such that i elements are already chosen, and the last of them is j.
    then we will have dp[i][j] = dp[i+1][j] + dp[i+1][2*j] + ... + dp[i+1][n/j*j]. and the base case is dp[n][x] = 1.

    my AC solution 6275634 uses this idea.

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

    Combinatorics

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

Problem D Div 2 (B Div 1): I should learn a faster language. Even O(KN) on Python still fails the time limit (or I analyzed the run time incorrectly). Most people I asked had only but used C++ or Java or something fast. :(

Is there anyone that tried to solve it in Python or some "slow" language and got accepted?

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

    Sadly, not all problems are solvable using python on codeforces.

    You should be cautious submitting problems having O(+1000000), It will most probably time out ... specially using python 3.

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

      Heh, okay, guess I need to get my C++ skills up too. Never thought Python is this much slower than C++. And perhaps note to problem setters: problems that don't force the participants to use a particular language are good. I'm missing those.

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

        It's not about being able to use any language, it's about writing a program that's fast enough. Maybe you could make a Python code work fast enough if you optimized a lot?

        My solution of C (div1) has a complexity that makes it possible to pass, but it gave TLE during the contest, yet I'm not saying the time limit should've been larger. It's basically the same thing.

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

          I was under the impression that O(KN) is already fast enough ("hey, only 4·106! Okay, perhaps multiply some coefficient, but it's not that large, isn't it?"), but you have a point too there.

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

    No one did. I found 1 C#, 1 Delphi and about 20 Java.

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

    I've got AC on Python 3.3

    That was easy 6288729

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

It feels like System Testing Became slow........

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

When can we see our new rates?

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

In (Div 2)problem B there was a huge confusion between — and . sign in the equation w.a/b

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

    At first, I thought that the sign was —. Thus, I couldn't explain sample tests. The image of expression maybe not clear enough.

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

Damn. I solved C in O(n22n) (plus O(n) per query), but my code wasn't fast enough during the contest. I only managed to optimize it well enough to pass around 1 minute after the contest.

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

    6285907, 6288207 — first one got TL during the contest(the only one that passed pretests but got TL on systests), second one passed all system tests in practise mode. The difference is only in one line:(

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

    My solution's complexity is O(n*2^n+mn)

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

    I make a mistake in Div1 D, write a-(b-c) as a-b-c. I corrected this and submitted only to find that the contest was just over!

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

Посылка во время соревнования выдаёт неверный ответ на 4 тест http://mirror.codeforces.com/contest/415/submission/6287526 Стоило сменить тип с longint на int64 (сделал после соревнования): http://mirror.codeforces.com/contest/415/submission/6288201

Из-за чего в первом случае выдаёт неверный ответ?

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

can anyone tell me what is the complexity of my solution to Div2 D problem ? at first i thought it n^2*k because of the loop in the function , i know that loop will not be completed at all , but it loops to n in worst case , when i tried the largest case it didn't take too much time , so i submitted it and it got AC , but i want to know the actual complexity of this solution ? My solution : http://mirror.codeforces.com/contest/415/submission/6284352

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

    I think it is n^2logn

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

    Note the following important "equation":

    (it can be easily proved).

    Now we see that in your code computation of dp[num][counter] takes about operations (and this is done for each 'num' and each 'counter'). Then for each counter computations are quite short:

    The counter can have k different values, so overall complexity is .

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

норм пацанам рейтинг не оч подняли

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

Waiting for the editorial for div1 C and E... I have no idea for these two ....

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

У меня в комнате никто не взламывал, и незавалил ни одного систеста.

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

Were constraints in C that big (when O(n log n) (ofc n:=2^n) is expected constraints on CF are rarely higher than 200k) to make O(n log^2 n) exceed time limit? I have written solution in that complexity (I'm so incautious, I thought that this is O(n log n), when this was simply O(n log^2 n) xd) and I think noone will get hurt if those solutions will fit in time limit :P. In my computer on maxtest O(n log n) works 6s while O(n log^2 n) works 7s :P (but in CF difference is significantly bigger). But I won't whine much, I should've think a second before coding :d.

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

Nice problems, B from div1 can be done better in O( n log k * log^2(n)) with matrix multiplication http://mirror.codeforces.com/contest/414/submission/6290524

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

    can you tell me how the idea of this?

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

      Since dp[i][j]=sum{dp[i-1][j'] | j'|j }. Let Vi = (dp[i][1],dp[i][2],...,dp[i][n]) then you can find a matrix that Vi=M*V[i-1]. Thus, you can solve this dp with matrix multiplication. In this case the matrix seems to be in some special form so Horia can store it in O(nlogn) space and multiply two matrix in O(nlog^2n).

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

I don't know the reason that after system test, my problem A and B are "skipped"!!! (and A,B problems, I just submit one time) Could admin give me a reason??

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

My Problem B couldn't pass the pretest 4 ... what's the wrong with this? Can anyone faced the same problem?

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

    your solution is not correct, for example with a=2,b=3 and w=2, the answer is 0 not 1

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

    w=((w%b)*(a%b))%b; cout<<w;

    1 135360 718513035 261734062

    the answer is 4435 your program will say it is 600415575

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

    same as mine. try this 1 2 9 5

    the answer should be 0

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

How to solve the problem D in div1

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

Is the system still pending on testing? I am not able to submit solutions for practice mode.