didgmldud0   6년 전

뭔가 문제인거죠,..,?

시간초과라는데..

jung2381187   6년 전

5000 x 5000짜리 농장 전체에 씨앗 심기를 200000번 하는 걸 이렇게 노가다로 계산하면 시간 초과가 날 수 밖에 없습니다.

더 빠른 계산법이 필요합니다.

jh05013   6년 전

https://www.acmicpc.net/board/...
"질문 검색을 먼저 해서 자신에게 필요한 답변이나 반례가 없는지 확인하고 질문을 남겨주세요."

bupjae   6년 전

이 프로그램의 시간복잡도는 O(NMQ) 입니다.

최대 크기의 입력 데이터의 경우 약 5000 * 5000 * 200000 = 5조 만큼의 연산이 필요한데, 당연히 시간 초과가 날 수 밖에 없습니다.

didgmldud0   6년 전

와우 그래서 맥스 데이타가 있었군요..

감사합니다 !!!

totoyang   6년 전

저도 같은 문제를 경험중입니다.

처음에 2-D 벡터에 해당 Cell별로 씨앗을 뿌리다가 시간초과가 나길래 이건 아니다 싶어서

문제를 다시 살펴보니.

문제에서 답을 구하라고 하는 것은 특정 Cell에 있는 Net(씨앗)이기 때문에 전체 농장Cell을 업댓할 필요가 없다고 생각했습니다.

그래서 다시 전략을 바꾸어서 

씨앗을 뿌리는 위치 (왼쪽 하단과 오른쪽 상단) Point 좌표 정보와 그때의 d(씨앗개수)를 저장했고, 

씨앗의 위치를 구할떄마다 위치 판정을 통해 Net(씨앗)을 계산했습니다.

그런데 신기한것은 이렇게 했음에도 시간초과 판정이 뜬다는 것입니다.

입출력 시간이 잘못되었나 싶어서 개인적으로 입출력 코드를 모두 C언어의 scanf(), prinf()로 바꾸었는데도 그러네요..

혹시 해결하시게 되면 도움좀 구합니다.

아래는 저의 실패한 코드 입니다.

jh05013   6년 전

그렇게 해도 시간복잡도가 큽니다. 각 쿼리가 10만 개씩 들어온다고 생각해 보세요.

이번에 추가된 바리스타 시리즈 모두 이렇게 간단하게 풀리지 않습니다.

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