質問の意味:
人々の行は、異なる容量値が一致を有する、シリアル番号が2つだけの間に二人の間、だけスキルレベルの審判を処方することができます
問題点:
「アルゴリズムコンテストエントリークラシック - トレーニングガイド」の分析:
コードには:
1の#include <iostreamの> 2の#include <CStringの> 3 使用して 名前空間STDを、 4 5 のconst int型 MAXA = 100000 + 10 。 6 CONST INT MAXN = 20000 + 10 。 7 8 INT [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(偽)。 39 int型のT; 40 // cinを>>トン。 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 iが++ ) 49 { 50 // CIN >> [I]。 51 のscanf(" %dの"、および[I])。 52 } 53 のための(int型 I = 1 ; I <= N- 1、I ++ ) 54 { 55個の C [I] = SUM([I] - 1 )。 56 更新([I])。 57 } 58 のmemset(ビット、0、はsizeof (ビット))。 59 のmemset(D、0、はsizeof (d)参照)。 60 のためには、(int型 I = N; I> = 2 ; i-- ) 61 { 62 のD [i]は= SUM([I] - 1 )。 63 更新([I])。 64 } 65 のために(INT I = 2 ; I <= N-1 ; I ++ ) 66 ANS + = C [I] *(NID [I])+(IC [I] - 1)* D [i]は、 67 coutの<< ANS << てendl; 68 69 } 70 リターン 0 。 71 }PS:
初心者ING、ひどく書かれました。純粋に個人的な使用のために