各種不爽,杭電1166終於掙扎著AC了

2021-07-02 06:09:07 字數 762 閱讀 2588

前不久學習了樹狀陣列,今天才打算做做相關題目,於是選擇了杭電oj的1166,各個營地士兵的數量的問題

不說什麼了,直接上**吧

#include#includeusing namespace std;

int n;//有n個營地

int c[50005];

int y; //臨時儲存輸入的陣列的值;

int lowbit(int x)

int sum(int c,int x) //直接求的前x項和

return sum;

}void change(int c,int i,int x)//更新每乙個c[n];

}int main()

; int m,n;

printf("case %d:\n",t-t);//輸出第幾個測試案例

scanf("%d",&n);

for(i=1;i<=n;i++)

while(scanf("%s",ml)!=eof)//每乙個命令

if(strcmp(ml,"sub")==0)

if(strcmp(ml,"query")==0)

if(strcmp(ml,"end")==0)}}

return 0;

}

ps:1、需要注意每個測試案例要初始化。2、輸入資料的時候不要丟掉個數scanf(「%d%d」,&m,&n); 一定要個數對應(這兩個問題我就是這麼錯的,浪費了不少時間55555~)

杭電1166 線段樹(單點更新)

線段樹只是acm眾多演算法中的很普遍的一種,但是他的效率非常高,一般演算法複雜度為o n 的題,通過線段樹之後,就會變成o log2 n 本文是以杭電acm1166題舉例,來對線段樹進行一些了解 杭電1166原題鏈結 比如說求5到12的總人數,用線段樹的話,你只要找到 5,7 8,10 11,12 ...

杭電 1166 敵兵布陣 (線段樹)

c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek和他手下tidy又開始忙乎了。a國在海岸線沿直線布置了n個工兵營地,derek和tidy的任務就是要監視這些工兵營地的活動情況。由於採取了某種先進的監測手段,所以每個工兵營地的人數c國都掌握的一清二楚,每個工兵營地的人數都有可能發生...

杭電 HOJ 1166 敵兵布陣 解題報告

直接求超時。用線段樹。簡單做法直接用2n陣列,以1為root,2 i為左節點,2 i 1為右節點。求區間 a,b 和時,如果a為右節點,則減去左節點的值。如果b為左節點,則減去右節點的值。a,b迭代為自己的父母。當a,b相等時,加上當前節點的值,即為區間和。我也是第一次接觸線段樹的概念。剛開始也想自...