注意更新信息時,不要直接覆蓋,可能覆蓋掉更優的信息。[WC2010] 重建計劃,CF1320C World of Darkraft: Battle for Azathoth(梅開二度)數組
正確:數據結構
if(l==r) { mx[cur]=max(mx[cur],v); return; }
錯誤:優化
if(l==r) { mx[cur]=v; return; }
注意分治對象。快遞員spa
正確:code
root=0,tot=siz[p],dfs_root(p,x),solve(root);
錯誤:對象
root=0,tot=siz[p],dfs_root(p,x),solve(p);
\(NTT\) 時 \(lim\) 不夠大,形成循環卷積。[2017 山東一輪集訓 Day1] Sum遊戲
節點數不超過 \(2n−1\),邊數不超過 \(3n−4\),數組大小要開成兩倍。CF1063F String Journey字符串
宏定義要注意括號的限制。[NOI2020] 美食家get
正確:數學
#define id(a,b) (a+(b)*n)
錯誤:
#define id(a,b) (a+b*n)
取模要完全,不要有漏的。[NOI Online #2 提升組] 遊戲
二分的對象爲給定元素的權值時,能夠二分元素的排名來優化時間,但要注意權值相等的狀況。CF603E Pastoral Oddities
正確:
for(int i=l;i<=mid;++i) if(ed[i].v<e[L].v||(ed[i].v==e[L].v&&ed[i].id<e[L].id)) merge(ed[i].x,ed[i].y);
錯誤:
for(int i=l;i<=mid;++i) if(ed[i].v<e[L].v) merge(ed[i].x,ed[i].y);
\(pair\) 重載 \(<\) 後不能應用於 \(\max\) 和 \(\min\)。水の數列
bool operator < (const pair<int,int> &a,const pair<int,int> &b) { return a.first*a.second<b.first*b.second; } void work() { pair<int,int> a=make_pair(100,1),b=make_pair(20,20); puts(max(a,b)==b?"1":"0"); }
會輸出 \(0\)。
兩個 \(10^{18}\) 的數相乘前要各自先取模。CF1261F Xor-Set