注意更新信息时,不要直接覆盖,可能覆盖掉更优的信息。[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