差之毫厘,失之千里
2020-05-24 本文已影响0人
信息学小屋
在信息学竞赛中,会有一些容易掉进去的坑。我给大家总结如下:
1、初始化取值。
如果初值是max的变量,不要轻易赋2147483647等接近极限的值,如果不小心相加的话会溢出。建议赋1e9,或在memset里用63。
2、浮点数精度误差
能不用浮点数尽量不要用浮点数。
别看浮点数能表示很大范围内的数,但是它的精度只有2^52(这里指double),只能表示一个大概的数,很容易出现偏差。
3、哈希有风险
如果出题人想搞个big news,哈希很容易呗卡掉的,所以能不用哈希尽量别用哈希。
4、sqrt不是O(1) 的
比较距离大小的时候可以永距离的平方,也就是不要开根。sqrt真的很慢很慢,NOIp 2017day2t1,我被卡了40分(虽然那时候评测机还是老爷机)。
5、spfa想卡就能卡
这点虽然不会爆零,但是几十分也是分啊。建议用堆优化的迪杰斯特拉(英文不会拼。。)
6、变量命名要谨慎
不要用next等作为变量名,容易本机AC提交CE
7、头文件要写全
memset要cstring(还是string,还是两个都要,记不清了。。),但是日常本机能过编译,我也不知道为什么。
8、大小写要注意区分
我有过脑子不好使,定义了一个N,又定义了一个n,然后手滑打错了。
【信息学竞赛从入门到巅峰】,一个专注于分享OI/ACM常用算法及知识的公众号。