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

Автор Bekh, история, 5 лет назад, По-английски

Hi,

The Problem

AC Code (2.5s): 56017075 (Or here if you can't view gym submissions)
TLE (over 30s, tested on custom private group contest with custom TL): 56017081 (Or here)

Regardless of the problem and its solution, the ONLY line that changes between the 2 submissions is the way I check if the state was calculated before or not. When I check it using if (ret != -1) it gives TLE, but when I check it using visit array is (visit[i][j] == vid) it passes. I don't even remove the extra memset for memoization array in each testcase when using the visit array. Why would this very small change result in that huge difference in time?

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

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

Auto comment: topic has been updated by Bekh (previous revision, new revision, compare).

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

clearly if u check if (ret != -1), solve(i,j) will be computed many times if solve(i,j) is indeed -1 even if you have visited it before? So there's no time complexity guarantee in the state, and therefore if most of solve(i,j) is -1, you solution is as slow as bruteforce?

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

    Zzz. Thank you. I just noticed that. Completely forgot that the input got negative values even tho it was included in sample.