神獸草泥馬
阿新 • • 發佈:2019-01-03
描述
念情發現了一些寶藏, 並且這些寶藏還是無窮無盡的!!念情正準備衝上去洗劫寶藏的時候,出來了一隻護寶神獸,名叫草泥馬!
守護寶藏的神獸說:這裡有N堆寶藏,他們都是無窮無盡的,你拿走之後,又會出現原來那麼多的寶藏,不過你只能取連續的x堆寶藏,並且不能重複取連續的x堆寶藏。如果你這樣做,所有的寶藏將消失。 念情很聰明,這點小問題不在話下,他完全能帶走最多的寶藏,於是他大叫著:“我的!我的!都是我的!”,衝上去洗劫了一番。 現在告訴你每堆寶藏的寶藏數,你能知道念情這次得到了多少寶藏麼? Hint: 假設現在有三堆寶藏,每堆寶藏的寶藏數分別為 1 2 1 那麼念情先取連續一堆: 1 + 2 + 1 = 4 再去連續兩堆: ( 1 + 2 ) + ( 2 + 1 )= 6 最後取連續三堆:( 1 + 2 + 1 )= 4 所以念情拿走的寶藏為 14輸入
開始有一個整數T,表示T組測試資料
接下來每組開始一個N,表示有N堆寶藏
接下來一行有N個數,表示每堆寶藏的寶藏數
N<50000每堆寶藏的寶藏數<10000
輸出
輸出念情帶走的寶藏數
樣例輸入
13
1 2 1
樣例輸出
14#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n; __int64 a[10010],b[10010],sum; int main() { int t; scanf("%d",&t); while(t--) { scanf("%d",&n); sum=0; memset(b,0,sizeof(b)); memset(a,0,sizeof(a)); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } for(int i=1;i<=n;i++) { b[i]=(a[i]*(n-i+1))*i; } for(int i=1;i<=n;i++) sum+=b[i]; printf("%I64d\n",sum); } return 0; }