線段樹易錯點

2022-06-27 13:24:14 字數 490 閱讀 3055

1、開線段樹的結構體時一定要開到4倍的點的大小;

2、寫區間求和時的題目時search()函式的返回值在不再區間裡時返回0,而區間求最小值時返999999999,最大值時返回-999999999;(int時)一定要是九個9,不然有些極限資料會卡範圍;

3、寫修改單個點的值和乙個區間的值的函式最好分開,乙個是節省時間,還有可以防止**混亂而出錯;

4、search()&updata()函式中判斷區間範圍的if語句中l,r和查詢的區間a,b的關係容易出錯;

5、注意根節點和子節點的關係,特別是+1的問題,歸結為一句話就是:若加都加,若不加都不加即:mid=(l+r);左子樹:l~mid(不加一),根為root*2;右子樹:r~mid+1(加一了),根為root*2+1(也加一);

6、權值是在邊上還是點上,這兩種關係**判斷上有不同;

7、結構體賦初值的時候也要注意,根據所求的是最大還是最小還是和來判斷;

8、線段樹的左端點在陣列中的下標一定要是1,而不是0。

面試易錯點

一 char str1 abc char str2 abc char str3 abc char str4 abc str1和str2是不相同的,str3和 str4是相同的,str1和str2是儲存在堆上,str3和 str4在常量區,這兩個指標指向的是同一位址 編譯器認為p1指向的 abc 和p...

總結 易錯點

題目要求是 結尾,我使用了str 1 str 2 single line containing only marks the end of a test case.題目給的是 f1 1 f2 2 fn fn 1 fn 2 n 3 我卻從f0開始推,並且迴圈跟著從0開始了 題目可能會出現一道腦筋急轉彎...

陣列易錯點

1.初始化定義 1.int n 常量表示式 常量表示式不能為變數 2.int main 內與int main 外的陣列初始化定義有區別 int main 內初始化為隨機,int main 外初始化值為0 2.資料範圍 a i 的i範圍不能超過常量表示式中的範圍 典型的陣列越界 3.陣列不能夠進行賦值...