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

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

Доброго времени суток.

Пытаюсь сдать задачу Длинный путь с 239 раунда.

Получаю WA13 или WA15, так как взятие остатка почему-то дает отрицательный результат...

Вот код. Помогите, пожалуйста.

UPD: проблема решена, спасибо gen и adamant!

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

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

Sadness:

dp[i] = (dp[i-1] * 2 + 2 - dp[a[i-1]-1]) % mod;

Happiness:

dp[i] = (mod + (dp[i-1] * 2 + 2 - dp[a[i-1]-1]) % mod) % mod;
»
10 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

Деление по модулю даёт отрицательный результат, т.к., учитывая, что мы в dp[i] храним значения по модулю, совсем не факт, что 2*dp[i-1]+2>dp[a[i-1]-1]. Это связано с тем, что из того, что a>b, не следует, что (a%n)>(b%n)

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

Всем спасибо. Задача решена, почему такое происходит, разобрался.