ESCAPEGEESE 문제 알고리즘 문의드립니다. rapguy 안녕하세요~ 항상 도움 주셔서 감사합니다.^^ 제가 ESCAPEGEESE 를 풀고 있는데 시간초과를 해결하지 못해서 힌트 문의드립니다. 기존에 http://algospot.com/forum/read/2041/ 에서 힌트가 있던데요. 아직 이해를 못해서 TT 동적계획 알고리즘 적용을 못하고 있습니다. 아래와 같은 방법으로 하면 N=500, K=100 일때 시간이 오래 걸리네요. (아래 알고리즘은 0번오리가 탈출을 했을때와 0번 오리가 탈출을 하지 못했을때로 나누어서 재귀로 cache 를 쓴건데 답은 나오지만 빠르지 않네요..) 위에 http://algospot.com/forum/read/2041/ 보다 조금 더 자세한 설명이 가능할런지요? 감사합니다.~ #include <stdio.h> #include <string.h> const int MOD = 1000000007; int T, N, K; int cache[500][500][100]; int func(int mod, int idx, int escape) { if(escape == K) return mod == 0; if(idx >= N) return 0; int& ret = cache[mod][idx][escape]; if(ret != -1) return ret; ret = (func(mod, idx + 1, escape) + func((mod + idx) % N, idx + 1, escape + 1)) % MOD; return ret; } int main() { scanf("%d", &T); while(T--) { scanf("%d %d", &N, &K); memset(cache, -1, sizeof(cache)); printf("%d\n", func(0, 0, 0)); } return 0; } 10년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
rapguy
안녕하세요~ 항상 도움 주셔서 감사합니다.^^
제가 ESCAPEGEESE 를 풀고 있는데 시간초과를 해결하지 못해서 힌트 문의드립니다.
기존에 http://algospot.com/forum/read/2041/ 에서 힌트가 있던데요.
아직 이해를 못해서 TT 동적계획 알고리즘 적용을 못하고 있습니다.
아래와 같은 방법으로 하면 N=500, K=100 일때 시간이 오래 걸리네요.
(아래 알고리즘은 0번오리가 탈출을 했을때와 0번 오리가 탈출을 하지 못했을때로 나누어서
재귀로 cache 를 쓴건데 답은 나오지만 빠르지 않네요..)
위에 http://algospot.com/forum/read/2041/ 보다 조금 더 자세한 설명이 가능할런지요?
감사합니다.~
10년 전