題目傳送門~~戳一戳
注意陣列大小,一般我們用線段樹,都開四倍空間。但是這道題資料量是一百萬,四倍開不了
所以我們就不能開四倍,而要計算一下空間,避免浪費。
計算方法就是 1000000 找到2的n次方剛好大於一百萬的那個數 就是2的20次方是1048576
然後再拿1048576 x 2 = 2097152 得到的這個數就是所需的大概空間
**
#include#include#include#includeusing namespace std;
const int maxn=2e6+7;
const int maxnode=2097152;
struct nodenode[maxnode];
int father[maxn];
int n,m,x,y,g;
void buildtree(int i,int left,int right)
buildtree(i<<1,left,(left+right)/2);
buildtree((i<<1)+1,(left+right)/2+1,right);
}void updatetree(int ri)
int ans;
void query(int i,int l,int r)
i=i<<1;
if(l<=node[i].right)
i++;
if(r>=node[i].left)
}int main()
char op[20];
while(m--)
else
}return 0;
}
#include#include#include#includeusing namespace std;
const int maxn=1e6+7;
int c[maxn];
int n,m,x,y,flag;
char str[15];
int lowbit(int x)
void add(int i,int val)
}int sum(int i)
return sum;
}int main()
while(m--)
}
NYOJ 116 樹狀陣列
時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。小工是南將軍手下的軍師,南將軍經常想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。南將軍的某次詢問之後士兵i可能又殺敵q人,之後南將軍再詢問的時候...
NYOJ 116 樹狀陣列
時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。小工是南將軍手下的軍師,南將軍經常想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。南將軍的某次詢問之後士兵i可能又殺敵q人,之後南將軍再詢問的時候,...
nyoj 116 士兵殺敵(二) 樹狀陣列
時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。小工是南將軍手下的軍師,南將軍經常想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。南將軍的某次詢問之後士兵i可能又殺敵q人,之後南將軍再詢問的時候...