当图论中,我们计算最短路径或者最小生成树时,总是喜欢将邻接矩阵或者dist数组初始化为INF。而INF会定义成一个无穷大的常量。众周知,int在计算机中占4字节,32位,所以就有了0x7fffffff,如果仅仅用来比较(求min时赋初值),这是一个很不错的选择。

但是在图论中,经常需要对距离进行更新

dist[j]=min(dist[j],dist[t]+w)

这样的式子是不是很常见。如果这时候INF再加上一个整数就会变成负数啦。

准确来说是无穷大+无穷大!=无穷大。

这时候引入0x3f3f3f3f=1061109567,是10^9级别的,一般的数据也是小于10^9,所以不会出现一个数据大于无穷大的情况。而0x3f3f3f3f+0x3f3f3f3f=2122219134也是无穷大,且没有超过int的范围(2147483647),这就满足了无穷大+无穷大=无穷大

还有一个好处,在memeset清零时,memset(a,0,sizeof a)的效率非常快。但是memeset是按字节来复制的,他会把一个int数的所有字节设置成第二个参数的后8位。

不妨试一下

memset(a,1,sizeof a)

然后打印一下

而我们的0x3f3f3f3f 竟然每一个字节都是0x3f!,这就可以直接用memset复制了。

值得注意的是

memset(a,0x3f,sizeof a)

memset(a,INF,sizeof a)

memset(a,0x3f3f,sizeof a)

memset(a,0x3f3f3f,sizeof a)

memset(a,0x3f3f3f3f,sizeof a)

都会被设置成INF,因为memset是对第一个参数的每一个字节都赋值第二个参数的后八位的。

但是我们在比较的时候

if(dist[j]==INF)

需要注意,这里的const 定义的常量一定要保持0x3f3f3f3f (4个3f哦)

(因为博主de过一个bug,所以想给其他人撑伞。

哭死

【关于memset和0x3f3f3f3f】相关推荐

  1. 关于c语言memset的头文件及模板

    头文件:#include<string.h> 模板:比如你定义了一个一维数组 int a[1000];你可以这样初始化全为0 memset(a,0,sizeof(a));//括号中分别是( ...

  2. 第五届合肥工业大学宣城校区程序设计大赛题解

    问题 A: 小问题 时间限制: 1 Sec  内存限制: 128 MB  Special Judge 题目描述 林喵喵特别喜欢解决女孩子们提出的问题. 于是, 有一天殷老师问了林喵喵一个小问题. 给出 ...

  3. Djkastra堆(手写堆)优化版

    直接上代码 代码中的注释掉的部分为C++优先队列实现 #include<cstdio> #include<cstdlib> #include<iostream> # ...

  4. K - Candies POJ - 3159(利用了自定义比较操作符)

    K - Candies POJ - 3159 题意: 孩子 A 觉得 B 得到的糖果不能比自己多超过 c,求 n 比 1 最多能多几颗糖果 思路:DJ,松弛条件: sweet[A] > swee ...

  5. G - MPI Maelstrom POJ - 1502

    G - MPI Maelstrom POJ - 1502 思路: 乍一看,我觉得使求一棵最小生成树,然后找到从根节点到叶节点的最长的一条 转念一想,这不就直接是从起点到各个点的最短路中最长的一条即可, ...

  6. A - Til the Cows Come Home POJ - 2387

    A - Til the Cows Come Home POJ - 2387 最短路 #include<iostream> #include<cstdio> #include&l ...

  7. 最短路专题(不完整)

    参考文章 文章目录 一.单源最短路 1. Dijkstra(堆优化) 模板 例题 Dijkstra 线段树优化 // 手抄了一遍还是没懂,等我强了再来 2. SPFA 二.全源最短路 Floyd 三. ...

  8. LibreOJ β Round #2

    这套题目真的不错,难度区分还是挺好的,后面的题目恕我愚笨,搞不定. 先看看前面几个吧--- A. 模拟只会猜题意 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测 ...

  9. UVA10534-----Wavio Sequence-----动态规划之LIS

    题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

最新文章

  1. DPDK — PDUMP 抓包工具
  2. Leetcode题库 144.二叉树的前序遍历(递归 C实现)
  3. google us web
  4. python随机生成10个整数列表_python_随机产生10个整数后找出最小值,最大值。
  5. win10 下pycharm+anaconda 编译生成pyd文件
  6. java高级教程_Java高级教程02
  7. android微信支付坑,微信支付踏坑之旅
  8. 独立博客网站FansUnion.cn运营2年的经验和教训以及未来规划
  9. 数据结构笔记(二) 栈和队列(C语言描述)
  10. transformer李宏毅讲解视频及decoder讲解
  11. ASP.NET MVC:UrlHelper.cs
  12. mysql sumif函数的使用方法_用sumif函数如何求平均值
  13. 2021-2022年小学期 程序设计开发实践 随堂笔记
  14. android入门之系统架构和环境搭建
  15. HTML(常用标签与超链接)的案例
  16. php实现转盘游戏后台奖品按照概率发放
  17. Linux终端、关机、ldd、ldconfig等系统命令
  18. PM2入门及其常用命令
  19. scratch案例——双人赛跑
  20. 最简单的基于 DirectShow 的视频播放器

热门文章

  1. 奖金600万美元的XPRIZE新冠病毒快速检测竞赛决出大奖获得者,以研制快速、大规模、低成本且简单易用的解决方案
  2. 硬实时RTLinux?为Linux打实时preempt_rt补丁
  3. 2020最新的web前端体系和路线图,想学web前端又不知道从哪开始的快来瞧一瞧呀
  4. 大端小端模式以及相互转化
  5. 几种编码方式(RZ、NRZ、NRZI、曼彻斯特编码)
  6. 1072: 青蛙爬井 Java
  7. 2018东南亚区块链创新峰会隆重召开,ETBOX团队获得高度认可
  8. 视频导入pr一卡一卡的(解决)
  9. keras入门教程 1.线性回归建模(快速入门)
  10. 控制面板卸载不了程序,教您如何处理控制面板中卸载不掉的软件