筆記 易錯點集合

2022-05-02 02:57:09 字數 2481 閱讀 4680

1.cena裡不能用bits/stdc++.h..... 當然正式考試也不行....

2.不要弄反#ifdef 和 #ifndef .....

3.取模優化原本是這麼寫的

if(x>=mod) x-=mod;

實際上要這麼寫:

while(x>=mod) x-=mod;

然後我也不知道有沒有起到優化的作用 .....

4.考慮方案選擇數相關dp問題時(比如組合數),0有關狀態算不算乙個方案(比如選0個)

5.乘法可能會爆int的情況下,使用如下**:

1ll*a*b; (a,b>=1000,000,000)

6.define時若胡亂操作會出問題比如:

#define ml(x) 1<7.高精度計算時注意值為0情況,不能有-0或者長度為0(不輸出)的這種智熄操作出現

8.線段樹要開4倍原陣列大小,樹鏈剖分時不要太吝惜記憶體,仔細分析陣列邊界情況和記憶體使用情況,避免re/mle

9.st表時請注意兩重迴圈的時候

for(j=1 to 20)

for(i=1 to n) -> 這重迴圈,**上i+(1<<(j-1))<=n的判斷,避免越界

10.打完暴力看看搜尋是否有後效性,引數是否簡潔;考慮記憶化搜尋有大機率變成正解

11.涉及位運算和邏輯表示式計算請打上括號.....

12.時間複雜度的考慮上,「先考慮線性」、再才考慮貪心、倍增、最後再考慮資料結構等一系列騷操作......

13.dp滾動陣列優化時,請確定把滾動陣列清乾淨.....

14.作這種比較時:

if(a[i]==a[i+1]) ...

請注意i+1有沒有越界....

以上是個人不怎麼犯的錯誤

下面是正片

1.請注意題目求的是最大值還是最小值

2.dp無從下手的時候,試著把題目要列舉的條件變為已知放入狀態中

3.dp時一定要初始化!!尤其是不可能出現的狀態,一定要注意!!

4.dp時初始化好了真的是可以為所欲為的

5.沒有這種操作:a+b>a'+b' => a+sqrt(b)>a'+sqrt(b')

6.當要對某個巨大陣列清空時,嘗試將「全部清空」改為「清空自己需要清空的元素」,可能會使效率提公升。

7.若a和b都已對k取模,此時(a-b)%k的值可能低於0。若要大於0則改為(a-b+k)%k,但同時應該注意運算溢位的情況。

8.常數玄學:在函式內進行操作,並且函式的呼叫過程中引數含縮窄轉換,可能會造成巨大常數。如定義變數long long a;,使用函式void fun(int x),進行如下的呼叫:fun(a);——實測1e5資料範圍下產生的效率差距超過4倍

9.floyd請一定要弄清楚是f[i][i]=0,還是f[i][i]=inf建議忽略鬆弛中有點相同的情況.....

10.對於非常規最短路問題,建議先考慮使用什麼演算法,再考慮要不要建圖。不少題目直接對演算法進行活用,而不需要多餘的建圖過程。例題:luogup1875,luogup1119

11.st表初始化的邊界問題....

for(int j=1;j<20;j++)

for(int i=1;i+(1<12.維護兩個滑動視窗單調佇列時,請注意陣列絕對不要弄混。比如更新b佇列時更新了a佇列的pos.....

13.清空鄰接表時,重置head、next陣列和目前指標p

memset(head,0,sizeof(head)), memset(next,0,sizeof(next)), p=1

14.打isap時,找相鄰點的層次最小值,請一定判斷該點的層次最小值是不是變成了-1......

15.關閉ios同步之後請一定不要用scanf,否則會出現段錯誤/詭異輸出等玄學錯誤....

16.犯了如下的窒息操作:

int n;

const int s=1,t=n;

正確操作:

int n,s,t;

...int main()

17.treap/sbt:cnt++後記得updata(x)啊.... 插入後記得rotate啊.....

18.座標類變數,不要用i/j來表示,那是作死....

thinkPHP易錯點集合

1.密碼長度驗證時出現 call to undefined function think mb strlen 開啟php擴充套件 extension php mbstring.dll 2.無法載入某個控制器 檢查呼叫控制器名稱是否與已有的控制器相同,檢查控制器的 命名空間是否給定 3.找不到mode...

面試易錯點

一 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開始了 題目可能會出現一道腦筋急轉彎...