Po 1, musisz uważać z pamięcią, żeby nie przekroczyć limitu pamięci.
Po 2, jeśli zrobisz, np int dp[N][N] i powstawiasz tam zera 2 forami, to złożonnośc z automatu robi się przynajmniej O(N^2), no ale bez sensu robić taką tablicę, jęsli jej nie potrzebujesz. Tak samo bez sensu robić tablicę o rozmiarze 1e6, jak wystarcza Ci tablica o rozmiarze 1e4.
Wszystko zależy od przypadku. Opisz dokładnie o jaki przypadek ci chodzi.