會把考試/做題時犯得不太容易發現的錯誤記錄下...
1.在$trie$圖/$trs$圖上亂搞時,注意可能需要把$fail$樹/$parent$樹中節點的貢獻傳遞給子樹
2.斜率優化$dp$,尤其注意別把$i,j$打反了!
3.空間不要開小了!線段樹4倍,$sam$2倍,$dfs$序2倍,鄰接表2倍
4.某種情況不合法時,可能需要同時去掉原本的貢獻和負貢獻
5.lct的rotate函式需要特判y節點是否為根!
6.主席樹相加減時,節點權只支援加減運算,不支援max or min
7.異或的值域可能比原來大,例如原值域是1e6,異或後可能變成$2^$
8.區間修改線段樹別忘了下推標記!!!並且在區間覆蓋修改的線段樹中,注意值域範圍,有些時候需要開兩個陣列(乙個記錄是否被更新過,乙個記錄更新成了什麼)
9.splay某個節點的資訊更新後,必須轉到根節點以更新整棵樹
10.大模數雜湊注意元素值域
11.多測時清空鄰接表的頭 字串也盡可能清空 注意多測題目的資料範圍!!仔細讀題並計算資料範圍
12.網路流題目的點邊陣列大小,網路流和sam都要init處理邊的編號
13.造極限資料,特別大和特別小
14.有的題目會卡行末空格,但注意迴圈裡加入行末空格特判時,如果不能進入迴圈,則回車也不會輸出!!
15.線段樹區間操作,if(r>mid) 不能直接else
16.double有效精度只有15位,有效位數多於15位時精度會炸,比如取模不能寫1e18+7
17.st表預處理內層迴圈不要越界
1.線段樹二分找位置時,盡量找前驅後繼然後+1/-1
2.在考慮集合計數方面的問題時,如果對單一元素/節點討論發現很難轉移時,考慮從集合的角度思考
3.在討論聯通塊類問題時,如果dp方程難以轉移,考慮固定乙個點再進行討論
4.正難則反!!!
5.vector的resize功能可以直接拓展容器大小,無需一次次pushback
6.tle別光顧著檢查做法的正確性和**是否有細節錯誤,有可能是題目中的細節沒有注意到或神奇的性質沒有觀察到
7.cin可以關掉流同步和繫結:關閉後scanf printf getchar都不能用了 只能全域性cin
std::ios::sync_with_stdio(false); cin.tie(0);
8.讀入和輸出也是題面 可能有隱藏的條件 還有一些是在輸出之後的explanation或者note裡
9.clock 很慢 不要總用
字串篇
1.乙個字串本質不同的回文串數量是$o(n)$級別
大學有關與C 的一些結論錯誤和一些總結
class base private int x public virtual void mf1 0 virtual void mf1 int virtual void mf2 void mf3 void mf3 double virtual void mf5 class base2 public ...
持續更新 一些結論與技巧
n 個節點無向完全圖的不同生成樹個數有 n 個 證明 無標號的樹個數 點數為 n 另一邊點數為 m 共有 n m 條邊的帶標號完全二分圖生成樹個數為 n m 1 m n 1 證明 將乙個長度為 n 的序列a變成嚴格單調遞增序列至少需要改的元素個數 構造陣列 b i a i i 求b的最長不下降子串行...
hibernate一些常見錯誤
1.出現該問題可能是在倆個多對多的實體類的對映配置檔案裡 錯將set的table配成了倆個實體類的表名,事實上應該設定為橋表的表名 2.出現該問題可能是在實體類的對映配置檔案裡 hibernate5.0 以後不需要建立服務註冊物件 serviceregistry 直接這樣建立 configurati...