질문의 의미 :
사람들의 행은 다른 용량의 값이 일치가, 일련 번호는하지만 둘 사이의 기술 수준에서, 두 사람 사이에 심판을 규정 할 수있다
문제 :
"알고리즘 경연 대회 엔트리 클래식 - 교육 가이드"분석 :
코드에 :
1 #INCLUDE <iostream> 2 #INCLUDE <CString을> 3 사용 스페이스 성병; 4 5 CONST의 INT의 MAXA = 100000 + 10 ; 6 CONST의 INT의 maxn = 20000 + 10 ; 7 8 INT A [maxn]; 9 INT의 비트 [MAXA]; 10 INT의 C [maxn]; 11 INT의 D [maxn]; 12 INT N; 13 긴 긴 ANS; 14 의 INT lowbit (INT (X)) 15 { 16 반환 , X (- X); 17 } 18 INT의 합 ( INT X) 19 { 20 INT의 RET = 0 ; 21 일 동안 (x> 0 ) 22 { 23 RET + = 비트 [X]; 24 X - = lowbit (X); 25 } 26 리턴 RET; 27 } 28 무효 업데이트 ( INT X) 29 { 30 반면 (X <= maxa- 1 ) 31 { 32 ++ 비트 [X]; 33 X + = lowbit (X); 34 } 35 } 36 INT 의 main () 37 { 38 // IOS :: sync_with_stdio (FALSE); 39 의 INT t; 40 // CIN >> t; 41 는 scanf ( " %의 D " , t); 42 동안 (t-- ) 43 { 44 의 ANS = 0 ; (45) memset 함수 (비트 0 , 는 sizeof (비트)); 46 memset 함수 (C, 0 , 는 sizeof (c)); 47 CIN >> N; (48) 에 대한이 ( int로 I = 1 ; i가 N = <; 내가 ++ ) 49 { 50 // CIN >> A [I]; 51 는 scanf ( " %의 D " , & A [I]); 52 } 53 대 ( int로 I = 1 ; I <= N- 1 ; I ++ ) 54 { 55 개 C [I]을 합 = (a [I] - 1 ); 56 업데이트 (a [I]); 57 } 58 memset 함수 (비트 0 , 는 sizeof (비트)); 59 memset 함수 (d, 0 , 는 sizeof (d)); (60) 에 대한이 ( int로 , I> = 1은 N = 2 , 난 - ) 61 { 62 (D)의 [내가] = 합 (a [I] - 1 ); 63 업데이트 (a [I]); 64 } 65 대 ( INT I = 2 ; I <= N-1 ; 내가 ++ ) 66 ANS + C = [I] * (NID [I]) + (IC [I] - 1 ) * D [I]; 67 COUT << ANS << ENDL; 68 (69) } (70) 창 0 ; 71 }추신:
초급 ING는 심하게 작성. 순전히 개인적인 용도로