一些常見錯誤 技巧 結論總結

2022-03-25 22:20:26 字數 1376 閱讀 9890

會把考試/做題時犯得不太容易發現的錯誤記錄下...

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...