51Nod 1081 子段求和 字首和演算法

2021-08-02 20:03:51 字數 530 閱讀 4410

真是要炸,乙個題看起來挺常規但oj就是一直給 超時,超時,超時,沒有辦法因為在自己看來演算法和結果都是沒有問題,所以在**格式上動了點心思,結果時間雖然有所減少但是超時了。

這是原題描述

51nod - 1081

下面附上自己最初的**,當然我認為這是初學者都最先想到的辦法。

#include 

int main()

return

0;}

下面附上從度娘那裡學來的字首和演算法,這種演算法能夠有效的降低演算法複雜度以及時間複雜度,在某型別問題裡應該是很常用的。

int main()

scanf("%d",&q);

for(;q>0;q--)

return

0;}

那麼到底什麼是字首和演算法呢?

就以這道題為例,即為通過提前算好各前i項和,在後面查詢時 能夠大量減少計算量,避免重複計算,節省時間,不過需要注意相應的下標。

51Nod 1081 子段求和(字首和)

基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 給出乙個長度為n的陣列,進行q次查詢,查詢從第i個元素開始長度為l的子段所有元素之和。例如,1 3 7 9 1,查詢第2個元素開始長度為3的子段和,1 1。3 7 9 19,輸出19。第1行 乙個數n,n為陣列的長度 2 n...

51nod 1081 子段求和

1081 子段求和 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 給出乙個長度為n的陣列,進行q次查詢,查詢從第i個元素開始長度為l的子段所有元素之和。例如,1 3 7 9 1,查詢第2個元素開始長度為3的子段和,1 1。3 7 9 19,輸出19。input 第1行 ...

51NOD 1081 子段求和

1081 子段求和 給出乙個長度為n的陣列,進行q次查詢,查詢從第i個元素開始長度為l的子段所有元素之和。例如,1 3 7 9 1,查詢第2個元素開始長度為3的子段和,1 1。3 7 9 19,輸出19。input 第1行 乙個數n,n為陣列的長度 2 n 50000 第2 至 n 1行 陣列的n個...