kbmin24   3년 전

다른 질문에서 어떤 분이 말씀해 주신 대로 다음과 같은 방법으로 코드를 구현했습니다 (https://www.acmicpc.net/board/...).

  • 각 열을 1차원 배열로 보고 prefix sum 전처리를 합니다.
  • 직사각형의 위와 아래 경계를 이루는 행을 i와 j로 고정했다고 하면, 이제 열의 구간을 선택하는 문제만 남습니다.
    • 따라서, 앞서 전처리한 결과를 이용해 각 열 k에 대해 입력배열의 부분합 A[k][i] + ... + A[k][j]를 구해줍니다. 이를 B[k]라고 합시다.
    • B[k]에 대한 문제는 언급하신 10986번 문제와 정확히 같은 방법으로 O(M)에 해결할 수 있습니다.

제가 구현한 코드에서 42줄부터 53줄까지가 10986번 문제와 같이 각 부분합에 대하여 가짓수를 찾는 부분인데, 문제는 이 과정에서 k번(최대 100만회) 루프하다 보니 시간 초과가 납니다.

혹시 이 부분을 다르게 구현할 수 있는 방법이 있을까요?

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