時間限制:
1000 ms | 記憶體限制:
65535 kb
難度:3 描述
南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。
小工是南將軍手下的軍師,南將軍現在想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。
注意,南將軍可能會問很多次問題。
輸入
只有一組測試資料
第一行是兩個整數n,m,其中n表示士兵的個數(1
輸出對於每乙個詢問,輸出總殺敵數
每個輸出佔一行
樣例輸入
5 21 2 3 4 5
1 32 4
樣例輸出
69
**[張云聰]原創
上傳者
張云聰#include
#define maxn 1000000
int a[maxn]=;
int sum[maxn]=;
int main()
while(m--)
return 0;
}這個**已ac
#include
#define maxn 1000000
int a[maxn]=;
int main()
while(m--)
printf("%d\n",sum);
}return 0;
}這個**輸進去時間超限,可能是m到n的那個迴圈讓**速度變慢
陣列申明在函式內部,屬於區域性變數,存放在了棧上,)看看陣列占用的記憶體大小:1000000=1000*1000然後乘以int型資料長度
1000*1000*4byte約等於4m,
而棧的預設記憶體空間為1m左右,所以會導致記憶體溢位
解決這個問題,可以將陣列申明在全域性儲存區或堆上即可
方法一:申明為全域性變數
方法二:存放在堆上
看別人的部落格是這樣寫的,好像用的樹狀陣列,水平太次,不是太懂,**如下
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int c[1000005];//樹狀陣列
int n;//士兵個數
int m;//詢問次數
int x,y;//詢問區間
int lowbit(int x)
void add(int i,int x)
}int sum(int i)
return sum;
}int main()
for(int i=1; i<=m; i++)
}
return 0;}
nyoj 108 士兵殺敵(一)
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。小工是南將軍手下的軍師,南將軍現在想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。注意,南將軍可能會問很多次問題。輸入 只有一組測試資料 第一行是...
NYOJ 108 士兵殺敵(一)
時間限制 1000 ms 記憶體限制 65535 kb難度 3 描述 南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。小工是南將軍手下的軍師,南將軍現在想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。注意,南將軍可能會問很多次問題。輸入 只有一組測試資料 第一行是兩...
NYOJ 108士兵殺敵(一)
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。小工是南將軍手下的軍師,南將軍現在想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。注意,南將軍可能會問很多次問題。輸入只有一組測試資料 第一行是兩...