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

Tomfng Lv1

在算法竞赛中,我们常常需要用到设置一个常量用来代表“无穷大”。

比如对于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 进行许可。
评论
目录
算竞中常用的无穷大--0x3f3f3f3f