devouring123   5년 전

예제는 제대로 작동하는거 같은데 어디서 시간 초과가 나는지 잘 모르겠네요.

DP구현을 잘 못한건가요?

DP[n]>0 인경우는 중간에 내부 for문 안에 들어있어서 물어봅니다.

kipa00   5년 전

D가 0이 될 수 있습니다.

devouring123   5년 전

D가 last_build 말씀하시는건가요? 아니면 dp배열 내부값이 0이 되는 것을 말씀하시는건가요?

last_build가 0이 될때 처리해서 올렸습니다. 그러나 이렇게 해도 느리네요

cin cout 속도가 느리기때문에 속도를 증가시키려고 printf scanf를 사용했는되도 시간 초과가 나네요

재귀함수로 안짜면 위상정렬밖에 답이 없는것 같은데 위상 정렬을 배우지 않아서 재귀로 짜보려고 한건데 조금 힘드네요 ㅠㅠ

sotter1020   5년 전

  1.  건물은 1번 부터 시작이기 때문에 last_build가 0일 될 경우의 수는 없지 않나요?
  2. 건물의 가중치 값은 0이상이기 때문에 dp가 0일 수도 있습니다. 3번 건물까지의 가중치를 구하는데 1,2,3이 다 0일 수도 있으니깐요. dp 초기를 -1로 하던가.. 경우의수가 없는수로해야 할 것 같습니다. 
  3. 그래서 만약 초기값이 아니라 결과값이 dp 0이 들어있을 경우 계속해서 재귀로 함수를 호출하게 될것입니다. 그래서 한번 갔던 루트도 또 재귀하게 되겠네요.
  4. 입출력때문에 시간이 오버되는거 같진 않고, 저는 재귀로 cout, cin썼는데 통과했습니다.

devouring123   5년 전

D가 0 이될수 있다는것이 그런말이군요. 풀었습니다. 감사합니다.

댓글을 작성하려면 로그인해야 합니다.