当前位置: 首页 > news >正文

0x01 位运算

[[bit]]:度量信息的单位,只有0和1。

[[位运算]]:与 或 非 异或——不只局限于逻辑运算。它们均可作用于[[二进制数]]

例题

E-起床困难综合症_0x01 基本算法-位运算
朴素算法:枚举0~m,求最大f(m):O(n*m)

利用位运算的分配律,将要枚举的m'拆成二次幂,然后进行枚举:O(2log2(m) n)

int k = log2(m);
for (int j = k; j >= 0; j--)  
    {  
        for (int i = 1; i <= n; i++)  
        {  
            if (oop[i] == 1)  
                ans[j] = ans[j] | ((t[i] >> j) & 1);  
            else if (oop[i] == 2)  
                ans[j] = ans[j] & ((t[i] >> j) & 1);  
            else if (oop[i] == 3)  
                ans[j] = ans[j] ^ ((t[i] >> j) & 1);  
        }  
        if (ans[j] == 0)  
        {  
            ans[j] = 1;  
            for (int i = 1; i <= n; i++)  
            {  
                if (oop[i] == 1)  
                    ans[j] = ans[j] | ((t[i] >> j) & 1);  
                else if (oop[i] == 2)  
                    ans[j] = ans[j] & ((t[i] >> j) & 1);  
                else if (oop[i] == 3)  
                    ans[j] = ans[j] ^ ((t[i] >> j) & 1);  
            }  
            if (ans[j] == 1)  
            {  
                if (res + (1 << j) <= m)  
                    res += (1 << j);  
                else  
                    continue;  
            }  
        }  
    }

[[补码]]: “二补码”

[[移位运算]]:代替2的幂次的乘除

例题
快速幂 #快速幂

A-a^b_0x01 基本算法-位运算
![Pasted image 20260424192348.png]]
对b转化为二进制,而a的2次幂的幂可以由递推得到:
![Pasted image 20260424192439.png]]

可以得到以下代码:

int power(int a, int b, int p) //a^b (mod p)  
{  
    int val = 1;  
    while (b > 0)  
    {  
        if (b & 1)  
            val = (val * a) % p;  
        b >>= 1;  
        a = (a * a) % p;  
    }  
    return val;  
}
64位整数乘法

C-64位整数乘法_0x01 基本算法-位运算

[法一:与快速幂类似,将b拆成二次幂相加]

#define ll long long  
ll multiply(ll a,ll b,ll p)  
{  
    ll val=0;  
    a=a%p;  
    b=b%p;  
    while(b)  
    {  
        if(b&1)  
            val=(val+a)%p;  
        a=(a*2)%p;  
        b>>=1;  
    }  
    return val;  
}

[法二:]

我不理解

![Pasted image 20260424201221.png]]

[[二进制状态压缩]]:用二进制数存储bool数组

例题

D-最短Hamilton路径_0x01 基本算法-位运算
朴素算法:枚举全排列,求最小 :O ( n * n ! )

二进制状态压缩:F [ i , j ]为在i状态下,终点为j的最短路径。其中 i 为二进制数存储bool数组,第k个点已经过,则第k位为1。

考虑状态转移:则枚举“中转点”,找最短的路径。

f[i][k] = min(f[i][k], f[i xor 1 << k][j] + a[j][k]);  

[[成对变换]]:n xor 1 =n+1;n+1 xor 1 =n(n偶数)

[[lowbit运算]]:二进制下只保留最低位的1的数

http://www.jsqmd.com/news/804785/

相关文章:

  • 谷歌排名算法有哪些? 外贸B2B网站提升询盘的4个优化重点
  • 把破事丢给AI,把快乐还给自己
  • 2026免费去水印小程序排行榜:免费去水印小程序推荐,哪款去水印效果好? - 科技热点发布
  • Java并发编程核心原理,程序员必备!
  • OpenWrt网络访问控制:家庭数字生活管理的终极解决方案
  • 在线水印去除怎么做?2026年免费去水印工具实测指南 - 科技热点发布
  • Cyberpunk 2077存档编辑器:开源技术实现与安全数据修改指南
  • 我的世界生化危机终极末日整合包下载(已汉化)2026最新版下载分享
  • SpringBoot和Vue3实战阿里百炼大模型极简版
  • 谢飞机大战互联网大厂
  • 3分钟极速部署:91160-cli全自动挂号工具完整实战指南
  • 离散流匹配与MaskFlow框架:视频生成技术解析
  • 2026青岛小儿推拿与产后康复排名,真专业机构这样选
  • 小红书视频怎么去水印保存?小红书图片去水印工具推荐 2026 - 科技热点发布
  • 如何用microeco完成微生物组学数据分析:新手终极指南
  • 使用curl命令快速测试Taotoken视频相关文案生成接口
  • Poppins字体终极指南:免费开源的多语言几何无衬线字体完全解析
  • DDR资源
  • Claude Opus 4.7 实测:编程、视觉与 Agent 能力有哪些变化?
  • AI技能标准化:构建学术写作的智能协作工作流
  • AI一文讲清RAG:从大模型局限到企业级知识库落地流程
  • GBase 8a 临时表在会话中间结果处理里的使用边界
  • ComfyUI-Impact-Pack终极指南:快速掌握AI图像增强的完整教程
  • ncmdumpGUI终极使用教程:轻松解密网易云音乐NCM文件
  • 独立开发者如何用 Taotoken Token Plan 套餐有效控制项目预算
  • GEO优化在酒旅品牌AI获客中实际效果如何?
  • APK Installer:Windows上的Android应用安装终极指南
  • 视频怎么在线去水印?免费在线去水印方法与工具2026实测推荐 - 科技热点发布
  • 2026成都眼周口周面部轮廓靠谱机构医生推荐 - 资讯焦点
  • 免费抖音去水印软件推荐,无广告安全好用|2026实测:抖音视频怎么去水印? - 科技热点发布