关于程序设计中INF和MOD值的设定
在取模操作中,我们常把MOD设置为1000000007
在设置无穷大值时中我们常常选择0x7fffffff作为INF值(32位int的最大值)
- 如果用这个值进行比较的话还好,但如果用这个数进行计算就很可能会出错。
- 例如在最短路径算法中用到的的松弛操作:if(a[u]+lm[u][v])
- 知道如果u不能到达v,那么lm[u][v]=INF,如果我们的INF取0x7fffffff,那么a[u]+lm[u][v]会溢出而变成负数, 我们的松弛操作便出错了。
- 我们可以得到一个设置INF值的原理:INF加上另一个数仍为无穷大
在别人的博客中看到了0x3f3f3f3f这个十分精妙的数
- 0x3f3f3f3f的十进制是1061109567,和0x7fffffff一样也是1e9级别的,而一般场合下的数据都是小于1e9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形。
- 由于一般的数据都不会大于1e9,所以当我们把无穷大加上一个数据时,它并不会溢出
- 事实上0x3f3f3f3f+0x3f3f3f3f=2122219134,这非常大,但却没有超过32位int的表示范围
- 0x3f3f3f3f还能给我们带来一个意想不到的额外好处:
- 如果我们想要将某个数组清零,我们通常会使用 memset(a,0,sizeof(a))这样的代码来实现
- 但是当我们想将邻接矩阵初始化时(所有边都为INF),就需要得自己写循环了
- 我们知道这是因为memset是按字节操作的,它能够对数组清零是因为0的每个字节都是0
- 但是如果我们将无穷大设为0x3f3f3f3f,由于0x3f3f3f3f的每个字节都是0x3f
- 所以要把一段内存全部置为无穷大,我们只需要memset(a,0x3f,sizeof(a))
关于程序设计中INF和MOD值的设定的更多相关文章
- 关于程序设计中经常出现的INF和MOD值的设定
摘自:https://www.cnblogs.com/gfvod/p/5548313.html 在取模操作中,我们常把MOD设置为1000000007,模一个大数和模一个质数可以减少冲突,而1e9+7 ...
- VB程序设计中Combobox的取值问题
Private a As Double Private Sub Combo1_Click() '1位小数,系数用10 a = Combo1.ItemData(Combo1.ListIn ...
- 51 nod 1421 最大MOD值
1421 最大MOD值 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以 ...
- 《程序设计中的组合数学》——polya计数
我们在高中的组合数学中常常会碰到有关涂色的问题,例如:用红蓝两种颜色给正方形的四个顶点涂色,会有几种不同的方案.在当时,我们下意识的认为,正方形的四个顶点是各不相同的,即正方形是固定的.而实际上我们知 ...
- C/C++ 语言中的表达式求值(原文作者:裘宗燕)
经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?”m = 1; n = m+++m++;最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4, ...
- 嵌入式程序设计中C/C++代码的优化
虽然使软件正确是一个工程合乎逻辑的最后一个步骤,但是在嵌入式的系统开发中,情况并不总是这样的.出于对低价产品的需求,硬件的设计者需要提供刚好足够的存储器和完成工作的处理能力.所以在嵌入式软件设计的最后 ...
- 51nod 1421 最大MOD值 | 暴力
题面 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以是同一个) ai,aj ,使得 ai mod aj 最大并且 ai ≥ aj. Input 单组测试数据. 第一行包含一个整数n,表示数 ...
- loadrunner脚本中参数化和返回值输出log到外部文件
loadrunner脚本中参数化和返回值输出log到外部文件 很多时候,我们在做性能测试之前,需要造数据,但是使用的这些参数化数据和生成的返回数据在后面的测试都会用的,所以我们需要在造数据过程中,将参 ...
- C/C++ 语言中的表达式求值
在此,首先向裘老师致敬! 裘宗燕:C/C++ 语言中的表达式求值 经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?” m = 1; n = m+++m++; 最近有位不相识的朋友 ...
随机推荐
- 基于TLS证书手动部署kubernetes集群(上)
一.简介 Kubernetes是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernetes也叫K8S. K8S是Google内部一个叫Borg的容器集群管理系统衍生 ...
- [ZJOI2018]保镖
[ZJOI2018]保镖 Tags:题解 题意 链接 初始在平面上有一些点,九条可怜随机出现在一个矩形内的任意一点.若九条可怜出现在\(O\)点,则平面上所有的点都从\(P_i\)移动到\(P'_i\ ...
- ajax传参data里面的键是一个变量的解决方法
直接用这种方式来传参,比如bean中有字段 username password,则是 data[username] = "用户名"; data[password] = " ...
- 页面添加友盟(CNZZ)统计和事件追踪
1. 在页面中引入友盟(CNZZ)统计的 JS 代码 <script type="text/javascript"> // 统计 var cnzz_protocol = ...
- Lambda学习---方法引用和其他基本应用
package com.zx; import java.util.*; import java.util.function.*; import java.util.stream.Collectors; ...
- 你应该知道Go语言的几个优势
要说起GO语言的优势,我们就得从GO语言的历史讲起了-- 本文由腾讯技术工程官方号发表在腾讯云+社区 2007年,受够了C++煎熬的Google首席软件工程师Rob Pike纠集Robert Grie ...
- vs2013 std::sort 分析
由于之前在debug模式下发现stl的sort简直慢到不能忍,所以自己写了一个sgi的sort,后来发现在release模式下,vs自带的sort快的不行,就研究了下. 这里有些和sgi-stl相通的 ...
- gulp:入门简介
本文是gulp的入门级介绍,主要内容包括什么是gulp,gulp与grunt有什么区别,gulp可以解决grunt存在的哪些问题,以及一个简单的说明例子. 什么是gulp gulp的官方定义非常简洁: ...
- Js_cookie保存登录名
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...
- 在WebGL场景中建立游戏规则
在前三篇文章的基础上,为基于Babylon.js的WebGL场景添加了类似战棋游戏的基本操作流程,包括从手中选择单位放入棋盘.显示单位具有的技能.选择技能.不同单位通过技能进行交互.处理交互结果以及进 ...