# debug
### 採雷重點
1. size()的返回值不能做運算 (x) l.size()-r.size()
3. 如果要做位元運算把(1<<40)放入long long裡,要把1改成1LL,因為只有數字的話型別為int
4. 如果要把int運算完後的值放到long long裡要轉型=> ans=(long long)a*b
5. runtime error!=TLE,可能為陣列越界,除0,非法記憶體存取,stack overflow
6. 寫這樣比較快 變數名稱.lower_bound(要找的value);
7. 有些資料結構要用multiset 必免重覆元素被覆蓋掉
8. 初始化mi要用INT_MAX or LLONG_MAX,1e9有可能不夠大
9. 能不用初始化就不用memset,避免TLE,或改為在讀測資的時候順便初始化
10. 位元運算的優先程度很低,所以只要有關位元運算都要括號
12. 特殊資料結構(set,pq)有時不一定比vector+sort好
13. 陣列用到超過邊界的格子不會提示,要自己注意邊界
14. 如果陣列要開3*10^6話就不要define int long long,不然會開不下
15. STL存取元素的數量都有上限,超過會爆,盡量用陣列取代
16. 如果整數型態是long long的話要改成printf("%lld")
17. 浮點數沒有顯示出來的位數不代表是0,盡量不要直接賦值上去,改為賦值算式上去
18. 有多組測資時要記得初始化!!
19. 狀態轉移初始化時,不合法的狀態要設為inf
20. 能不用map去做映射就不要用,用一般陣列計數就好,否則有可能會TLE
21. 線段樹寫if(Lb <= l && r <= Rb) return seg[node]; 比 if((l == Lb && r == Rb) || l==r) return seg[node]; 快
22. 在函式中交換值時,要記得用&取本尊
23. 陣列最大值要注意!!!很重要!!!有可能會TLE
24. 線段樹在query中的回傳值,要注意狀態,要跟built的狀態一樣,相乘就要記得是相乘
25. 元素相乘取餘數不可蓋前綴和,如果元素相乘沒有取餘數可以蓋前綴和,區間[l,r]=pre[r]/pre[l-1]
26. 二分搜時要注意右界大小,有可能(l+r)時溢位,或太小沒搜到答案
27. 函數pow會回傳浮點數,如果後面有運算式都會變成浮點數運算,輸出時要注意型態,免得cout顯示科學記號而WA
28. vector int mp[MAXN],盡量開在globle,否則可能會seg fault
29. 變數沒用到的就不要宣告,免得mid打成m卻不知道錯哪
30. 次方不能取模
31. define ing long long時,1要寫1LL
32. 數值相減時要注意大減小才會是絕對值
33. 拓譜排序時,node放進去queue的條件為if(- -task[now]==0),注意"==0"
34. dp top-down時初始化要為-1,避免TLE
35. priority_queue TLE時可以改用單調對列(deque)優化
36. struct的空間比較大,MLE時可以考慮把裡面的元素拆出來各自宣告
37. 線段樹要開到SIZE*4才夠用
38. 負數區間取mid要用l+(r-l)/2
39. 李超線段樹動態開點查詢時如果是NULL要返回-INF
40. 計數的變數不能取模
41. 宣告太大的陣列會耗太多時間,可能導致TLE
42. 當題目有取餘數時,要記得先+mod再%mod,避免出現負數
43. long long 位運算要記得用1ll
44. 變數有可能減到負數的情況下,不能使用while(variable),會TLE
45. 巢狀迴圈遍歷的變數不能一樣,否則會衝突
46. C的FIFO讀檔有坑,結尾可能有兩個字元