错误集

数据结构

线段树

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

LCT

维护子树信息时,修改点权不能只是 \(splay(x)\),要 \(makeroot(x)\)共价大爷游长沙

点分治

注意分治对象。快递员

正确:

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] 美食家

正确:

#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

posted @ 2020-08-10 16:11  lhm_liu  阅读(445)  评论(1编辑  收藏  举报