一開始竟然用的vector儲存的第i項到第j項的和,果斷爆掉了記憶體呢,我真的是醉了。。
用乙個陣列儲存前k項的和,例如 b[k] = a[1] + ... + a[k] 的和,然後就不說了,都是淚。。(用時244ms)
**:
#include #include using namespace std;
const int maxn = 1e6;
int b[maxn + 5];
int a[maxn + 5];
int main()
for(int i = 1;i <= n;++i)
while(m--)
printf("%d\n",b[d] - b[c] + a[c]);
}return 0;
}
還有一種用樹狀陣列的方法,用時316ms
**:
#include const int maxn = 1e6;
int a[maxn + 5];
int c[maxn + 5];
int n,m;
void add(int k,int num)
}int query(int k)
return sum;
}int main()
while(m--)
printf("%d\n",query(y) - query(x - 1));
}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號士兵的總殺敵數,請你幫助小工來回答南將軍吧。注意,南將軍可能會問很多次問題。輸入只有一組測試資料 第一行是兩...