如題,專門總結一下本身犯過的錯誤,引覺得戒spa
1.偷懶使用#define int long long的時候,絕對要放在代碼上方,絕對要放在讀優上方!!!debug
2.在機房等地寫代碼時(特別是比賽時)要開代碼警告字符串
3.比賽時上交代碼以前要再仔細檢查文件流、子文件夾、以及有沒有手賤打上什麼奇奇怪怪的東西,代碼修改了必定要保存,debug完後的代碼必定要備份!!!(NOIP2018的慘痛教訓)qt
4.數學題卡常的時候,不妨嘗試把mod從longlong改爲int(若是不wa的話)數學
5.用拓展歐拉定理的時候,必須在b>=mod時才$+\phi(mod)$,不然會錯hash
6.一個字符串若是有循環節長度爲x,則$hash(l+x,r)=hash(l,r-x)$it
7.fhqtreap merge和split的時候,注意相對位置(好比在整個子樹的第k+1大,分裂成前k大和剩餘的數,在剩餘的數裏面再split一次是分裂成第一大和剩餘的數!!!)循環
8.fhqtreap 按位置merge和split的時候,要注意相對位置(好比split(root,x,y,k)以後merge(root,x,y)而不能merge(root,y,x))迭代器
9.fhqtreap 在須要求max或者min的時候,必定要把root的val和mx/mn設成inf/-inf!!!bug
10.set&&multiset erase的時候刪的是一個位置,不是一個數,刪一個數時要先find一次判在不在,而後再刪掉find那個迭代器!!
11.fhqtreap按權值分裂,split的時候是判當前節點權值若是大於v就分離左子樹... 即if(v<=t[rt].v) r=rt, split(lc,l,lc,k),up(rt);