算竞中常用的无穷大--0x3f3f3f3f

在算法竞赛中,我们常常需要用到设置一个常量用来代表“无穷大”。
比如对于int类型的数,许多人会使用INT_MAX来表示无穷大,但同时也面临着一个问题,那就是只要加一就会溢出,特别是对于某些带有返回值用递归(特别是动态规划的一些题目)来求解的题目,那么意味着这个特殊值不能做任何的运算,必须采用特判,不仅代码复杂还容易出错。
所以在算法竞赛中,常常使用0x3f3f3f3f来作为无穷大,主要有以下好处:
0x3f3f3f3f的十进制为1061109567,和INT_MAX一个数量级,即10^9数量级,而一般场合下的数据都是小于10^9的。
0x3f3f3f3f * 2 = 2122219134,无穷大相加依然不会溢出。
可以使用memset(array, 0x3f, sizeof(array))
来为数组设初值为0x3f3f3f3f,因为这个数的每个字节都是0x3f。
其中memset函数,需要注意,1.需要包含cstring头文件 2.是按字节进行赋值的
ps:常用的操作还有memset(array,-1,sizeof(array))
因为-1是0xff,而0xffffffff也是-1,所以常常可以用来初始化一些数组,作为特殊信息。
- 标题: 算竞中常用的无穷大--0x3f3f3f3f
- 作者: Tomfng
- 创建于 : 2025-07-15 20:22:00
- 更新于 : 2025-07-15 20:25:24
- 链接: https://redefine.ohevan.com/2025/07/15/算法/算竞中常用的无穷大--0x3f3f3f3f/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论