鈤啊,最近手残导致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]);