睿智错误

鈤啊,最近手残导致fst得好多啊淦,以前总是觉得没必要记录,现在一想还是记下来防止下次吧/kk

以下我分几类来记录。

数据类型和范围

虽然这方面我还是很注意很注意,但还是避免不了睿智错误/kk

×:

    1<<i

√:

    1ll<<i

×:

    long long x = (1ll << 64) - 1;

√:

    unsigned long long x = 0;
    x--;

\(1<<i\)和\(1>>i\)中的\(i\)比\(64\)大或比\(0\)小是ub!!!

虽然跑出来答案没错,但是不要这么写!


×:

    long long a;
    printf("%d",a);

√:

    long long a;
    printf("%lld",a);

别问,问就是真犯过。


多测不清空

我对此真的是深恶痛绝

×:

    memset(head,0,sizeof(head));

√:

    memset(head,0,sizeof(head));
    edge_cnt = 0;

×:

using namespace std;
int cnt;
int main()
{
    while (T--)
    {
        if (...)
            cnt++;
    }
}

√:

using namespace std;
int cnt;
int main()
{
    while (T--)
    {
        cnt = 0;
        if (...)
            cnt++;
    }
}

初值问题

这个最近可能不多,但还是放出来。

×:

    int f[N];
    memset(f,127,sizeof(f));
    f[i] = min(f[i],f[i - 1] + f[i - 2]);

√:

    int f[N];
    memset(f,127,sizeof(f));
    f[i] = min(1ll * f[i],0ll + f[i - 1] + f[i - 2]);

上一篇:【YBTOJ】【Luogu P4667】[BalticOI 2011 Day1]Switch the Lamp On


下一篇:HDU 3791 二叉搜索树