记录一些莫名WA.
初始值
在进行dfs遍历的时候,初始值是0(根)然后取max的时候注意求max的初始值一定要比0还低,即-1,不然会被卡(入口就是最深处的hack)
式子
计算
取模会导致数字变小,所以min需要手动去判断!不能直接min.
条件严格
检查 <,> 这种运算符是否严谨,能换成 <=,>= 的一定要换.
函数有返回值但是不写
VSCode在函数有返回值但是不写的时候会RE,但是的devc++会返回0.
祖宗
爆long long.
交互
cout<<"!"<<solve()<<endl; 是错的,因为先执行 cout 输出然后再计算函数的值,也就是说 solve 里面如果交互再 ? 就直接WA了.
除法
检查一下有没有除0模0的特判.
分解
统计一个数的因数的时候,在 $f(x),f(n/x)$ 特判一下这俩数一不一样,否则会重复计数.
双指针
记得结算的时候动一下指针让 l 跑到数列末端.
树
给定一棵树有n个节点,首先要判定是不是一棵树(ie度数和 $\sum_{i=1}^nd_i=n-2$ )
一定要特判节点为1的时候有多少种情况!!!
- 树的相同判定:给一个深度上有多少节点的数组,判断这样的树是否唯一.
然而我们发现只有连着的节点大于2的才有多种,单独2后面还有链的并不算,可以看演示:1
2
3
4
5
6 a a a a
/|\ /|\ /|\ /|\
bcd bcd bcd bcd
| | ||| |\|
e e efg efg
这两种树本质上一样.但是这俩不一样.
精度问题
有的时候取log或者怎么样然后涉及取整的时候函数会有精度误差,不能直接用ceil,要先减掉一个eps,否则会WA.
图论
- 给一张无向图,遍历,染个色(只保证无自环重边).
肯定是要bfs的了,但是有个hack是 给的图不一定连通 ,所以要在bfs这里套一个循环保证每个点都要进队(被遍历到).(CF687A)
数学
鸽巢的时候记得卡一下边界,虽然书上说最多能放 $\lceil\frac nk\rceil$ 个,但是最多能着的下 $n\%k$ 种,记得统计一下.(另外,如果ceil等于直接除的话要特判,因为此时 $n\%k$ 等于0)
目力
众所周知,某些质数因为长得像而混迹998244353,而有的则是正确输出 YE5 ,错误输出 N0 ,就很邪恶.1
2
3
4
5
6
7
8
9
10
11
12998244853 是质数
998244259 是质数
99824353 是质数
993244853 是质数
998242353 不是质数
998244533 不是质数
100000007(1e8+7) 是质数
19491001 是质数
19260817 是质数
1234567891 是质数