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)10.打完暴力看看搜尋是否有後效性,引數是否簡潔;考慮記憶化搜尋有大機率變成正解for(i=1 to n) -> 這重迴圈,**上i+(1<<(j-1))<=n的判斷,避免越界
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開始了 題目可能會出現一道腦筋急轉彎...