鏈接:click here
題意:
南將軍手下有N個士兵,分別編號1到N,這些士兵的殺敵數都是已知的。
小工是南將軍手下的軍師,南將軍經常想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。
南將軍的某次詢問之後士兵i可能又殺敵q人,之後南將軍再詢問的時候,需要考慮到新增的殺敵數。
思路:RMQ 入門代碼:
#include//RMQ #include #include int a[1000005]; int N,M; #define lowbit(x) ((x)&(-x)) void update(int i,int x) { while(i<=N) { a[i]+=x; i+=lowbit(i); } } int sum(int n) { int sum=0; while(n>0) { sum+=a[n]; n-=lowbit(n); } return sum; } int main() { int i,j,pre,last,t; char str[10]; scanf("%d%d",&N,&M); for(i=1; i<=N; i++) { scanf("%d",&t); update(i,t); } for(i=0; i