论OI中最大值的选取
2024-09-17 20:58:17
为什么我的Floyd会输出负数啊?
为什么我的代码写对了却全都爆零了啊?
那么很可能是你的INF取大/小了!
那么inf到底应该取什么值呢?
首先,inf应该要比一般的题目中出现的数据要大,但是又不能超过max_int。
1e9是一个好选择!
为什么不是0x7fffffff呢?这不是int的最大值吗
因为有的时候(例如Floyd等算法)会出现两个inf相加的情况,如果inf取max_int则加法会造成溢出,而取1e9则不会出现这样的情况。
但是初始化会不会很麻烦?
答案是肯定的,谁都不愿意为了一个初始化去写循环,又慢而且还麻烦。
我们注意到0x3f3f3f3f的每8位(int为32位)二进制位上都是0x3f,所以我们可以方便的使用memset来方便的初始化数组
而0x3f3f3f3f等于1061109567,2*inf=2122219134,即使是两倍的inf也并不会溢出
综上所述,inf的选择应该是0x3f3f3f3f
当然如果没有加法操作用0x7f7f7f7f也是可以的,初始化时直接用memset 0x7f就可以了
最新文章
- New Training Table
- ubuntu安装erlang
- 【GoLang】函数作为 类型 和 值
- Android之ADB指令
- 以编程方式使用 Word 中的内置对话框
- unsigned int 转 RGB
- Spring框架下的单元测试方法
- Max Sum of Max-K-sub-sequence(单调队列)
- Android 开发环境搭建之——ADT-Bundle for Windows
- mysql中的coalesce用法
- Azure Function &; AWS Function With C#
- Orchard详解--第九篇 拓展模块及引用的处理
- [转]SASS用法指南
- MarkDown常用格式
- CF1106F Lunar New Year and a Recursive Sequence 原根、矩阵快速幂、BSGS
- C# ,asp.net 获取当前,相对,绝对路径
- Kubernetes才是微服务和DevOps的桥梁
- GraphQL和RESTful的区别
- python中的异常处理机制
- 对接融云即时通讯组件SDK,轻松实现App聊天室