Cowavans CodeForces를 RAID로 (블록 폭력) 시간 - 103D

문제의 의미

사용자는 (1 ≤ N ≤ 3 · 1E5) 시퀀스 m (1 ≤ P ≤ 3 · 1E5) 질의, 요구마다 A, A +의 B, A + 2B + ... <= N의 N 길이 수득 과

사고

스타트는 방법 분, 실제로 블록은 블록 순서는 또한 데이터, 특정 관행의 다음과 같은 논의의 블록으로 나눌 수 있습니다 될 수 있다는 것을 알고하지 않았다 설명을 읽고 어떤 정보를 유지하는 수 잉태하지되었습니다

첫째,이 질문은 오프라인 대형 소형에서, 먼저 쿼리를 읽고, 쿼리를 수행하는 온라인 요구되지
① 놓으면 <√N 때, 사전-B의 각각에 대한 우리 같은 배열의 합 [I] 내가 시퀀스와 (당신이 찾아 DP 간단한을 사용할 수 있습니다)와 O (1) 쿼리가 이렇게의 장점은 다른이 같은 B, 우리를 통해 정렬 할 수 있다면 다른 요청하는 것입니다 b를 그것은 시작 지점 간격으로 걸릴 것입니다 이러한 직접 합 배열을 이용하여 시간 복잡도는 O (n√n).
② b≥√n, 직접 폭력 합산 시간 복잡도는 O 인 경우 (m√n)
O의 총 시간 복잡도 ((m + n)이 너무 √n )

사용법 #include <iostream> 
#INCLUDE <알고리즘> 
#INCLUDE <cmath>
  사용  공간을 성병;
 CONST  INT maxn = 3e5 + (10) ;
 형식 정의를 오래  오래 LL;
 LL A [maxn];
 구조체 노드 {
      INT의 A, B ID;
     부울  연산자 <( CONST 노드들) CONST
     {
         반환 B < SB를;
     }
 B} [maxn];
 LL의 ANS [maxn];
 [maxn] sum_b 것이다;
 int 형 ) (주
 {
     INT의 N, m;
     scanf와 ( " %의 D ' , N);
     INT BL = SQRT (N);
     위한 ( INT 난 = 1 ; I <= N; I ++ )
         scanf와 ( " % I64d " , & A [I]);
     scanf와 ( " %의 D ' , m);
     위한 ( INT 나 = 1 ; I <= m; I ++ ) {
         B [i]를 .ID = I;
         scanf와 ( " % D % D ' , B [i]를 .A, B [I] .B);
     }
     정렬 (B + 1 , B + 1 + m);
     B [ 0 ] .B = 0 ;
    위한 ( INT 나 = 1 ; I <= m; I ++ ) {
         경우 (b [I] .B> = BL) {
            ANS [B [I] .ID] = 0 ;
             ( INT의 K = B [i]를 .A] K <= N, K + = B [i]를 .B)
                ANS [B [I] .ID] + = A [K];
        }
        {
             경우 (b [I] .B == B [I- 1 ] .B) {
                ANS [B [I] .ID] = sum_b [B [I] .A];
            }
            {
                  ( INT J = N; J> = 1 ; j-- )
                     만약 (j + B [I] .B> N)
                        sum_b [J]를 = A [J]을;
                    다른 
                        sum_b [J] = sum_b [J + B [I] .B] + A [J];
                ANS [B [I] .ID] = sum_b [B [I] .A];
            }
        }
    }
    위한 ( INT 난 = 1 ; I <= m; I ++ )
        의 printf ( " % I64d \ n " , ANS [I]);
    반환  0 ;
}

추천

출처www.cnblogs.com/overrate-wsj/p/12168925.html