首页 > 其他分享 >二进制优化

二进制优化

时间:2022-08-15 10:47:08浏览次数:52  
标签:10 数字 16 二进制 优化 枚举 32 任意

二进制枚举优化

比如要枚举0->1023中所有的数
我们平常的枚举方法就是:0,1,2,3,4,5,...,1023。这样枚举1024次

使用二进制枚举优化,就可以只需枚举10次就可以枚举出任意一个数。

将0~1023这1024个数分为10个组,每组分别是:1 2 4 8 16 32 64 128 256 512 这10个数字(2^0 2^1 2^2 ... 2^9)。

在枚举的时候只枚举这10个数字,选或不选。就可以枚举出0~1023中的任意一个数字

证明:
1 2 4 8 16 32 64 128 256 512

第一组(个)数字就可枚举出0~1中的任意一个数字
第一、二组(个)数字就可以枚举出0~3中的任意一个数字
第一、二、三组数字就可枚举出0~7中的任意一个数字
第一、二、三、四组数字就可以枚举出0~15中的任意一个数字
一次类推...
所以这十组数字就可以枚举出0~1023中的任意一个数字

这样,原来需要枚举2^10次方次的枚举就优化到了10次,是一个log级别的优化。

再看如果枚举的是0~70呢?
还是从2^0次方开始分组:1 2 4 8 16 32 64 在64(即2^6)的时候所有数加起来就已经大于70了,显然如果这样来就会枚举到不存在的数(或者说没有要求枚举的数)这样显然是不成立的

所以分组:1 2 4 8 16 32 7
最后一个分组是7 。由来:70-(1+2+4+8+16+32)=7
这样可以枚举到0~70的任何一个数

证明:
1 2 4 8 16 32 7
第一组可以枚举出0~1中任意一个数
第一、二组可以枚举出0~3中任意一个数
第一、二、三组可以枚举出0~7中任意一个数
...
所以这7组数就可以枚举出0~70中的任意一个数。

标签:10,数字,16,二进制,优化,枚举,32,任意
From: https://www.cnblogs.com/rdisheng/p/16587420.html

相关文章

  • SQL优化这5个极简法则,直接让查询原地起飞!
      SQL作为关系型数据库的标准语言,是IT从业人员必不可少的技能之一。SQL本身并不难学,编写查询语句也很容易,但是想要编写出能够高效运行的查询语句却有一定的难度。......
  • 二进制数、八进制数、16进制数和十进制数的相互转换
     001、二进制数、八进制数、16进制数向十进制转换 转换规则:  002、十进制数向二进制、八进制、16位进制数转换 ......
  • 【学习笔记】线段树优化建图
    先开坑,有时间再说。例题CF786BLegacyCode//线段树优化建图,从寒假一直咕到暑假//之前觉得难得不行,现在看还是挺好理解的#include<queue>#include<cstdio>#includ......
  • 二进制获取指定位的值
    -每个十进制都可以转换为二进制:3:00118:100015:1111如果让二进制的每一位代表一个有具体含义的状态,那么这种存储状态的方式就会大大节省资源。提供一个十进......
  • 数制和二进制
    数制的概念十进制(D)        二进制(B)      八进制(O/Q)        十六进制(H)数码:数制中表示基本数值大小的不同数字符号称为数码。......
  • 拉格朗日插值优化DP
    拉格朗日插值优化DP模拟赛出现神秘插值,太难啦!!回忆拉格朗日插值是用来做什么的对于一个多项式\(F(x)\),如果已知它的次数为\(m-1\),且已知\(m\)个点值,那么可以得到\[F(k......
  • CF986C AND Graph(图论+二进制连边)
    CF986CANDGraph\(\color{yellow}{\bigstar\texttt{Hint}}\):和每个点连接的点是这个数取反后的子集,考虑将这个点和它的反连边,那么所有对应的数的子集都是同一个连通块内......
  • HIVE优化之记录的分离与聚合
    行转列①CONCAT(stringA/col,stringB/col…):返回输入字符串连接后的结果,支持任意个输入字符串;②CONCAT_WS(separator,str1,str2,...):·它是一个特殊形式的......
  • Python的分子模拟动态促进DF Theory理论对二进制硬盘系统的适用性
    全文链接:http://tecdat.cn/?p=27993 原文出处:拓端数据部落公众号作者:LawrenceXi这是一个偏学术的项目。流体力学界对过冷液体(supercooledliquid)的认知还不完善,我的......
  • JavaWeb阶段性项目1:系统的servlet优化5
    前置知识前置准备知识准备已掌握JavaSE/MySQL/JDBC+HTML/CSS/JavaScript基础并已完成了Javaweb前置知识的学习01-JavaWeb-HTML初识02-JavaWeb-CSS初识03-JavaWeb-Ja......