lyd读书笔记 0x01位运算

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

回来了一本算法竞赛进阶指南。可喜可贺,可喜可贺。
于是怀揣着期末考试GG的决心,我….开刷了(x)
顺便一提。。打*的题太丧病了所以就不做了。。


基本概念

bit是度量信息的基本单位。
0x表示16进制,0xff代表-1,0x7f代表128。
在m位二进制中,从右到左最低位为第0位,最高位为第m-1位。
我们常用0x3f3f3f3f表示最大值,因为二倍是int最大整数,每8位相同。
memset语句只能赋值出每8位相同的int,memset(a, 0x3f, sizeof a)可以用来初始化成最大值。
补码能比反码多表示一个数,减少了特殊判断,在电路设计中很简洁。
1<<n1<<n表示2n2n,n<<1n<<1表示n×2n×2,n>>1n>>1表示⌊n2.0⌋⌊n2.0⌋
所以我学了啥

位运算优先级:
+ - >> << >> > > < == != >> & > ^ >> |

快速幂与慢速乘

快速幂模板题 POJ1995

#include <iostream>
using namespace std;
typedef long long LL;
LL T, n, m, qwq, tmpa, tmpk, ans;
inline LL ksmqm(LL a, LL k, LL mod) {
    LL ans = 1;
    for(; k; k >>= 1) {
        if(k & 1) ans = ans * a % mod;
        a = a * a % mod;
    }
    return ans;
}
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin>>T;
    while(T--) {
        ans = 0;
        cin>>m;
        cin>>n;
        while(n--) {
            cin>>tmpa>>tmpk;
            ans = (ans + ksmqm(tmpa, tmpk, m)) % m;
        }
        cout<<ans<<endl;
    }
    return 0;
}

慢速乘法
法一:对b二进制拆分然后跑一遍快速幂,O(logb)
法二:玄学的过程?

LL mul(LL a, LL b, LL p){
    a %= p, b %= p;
    LL c = (long double) a * b - c * p;
    LL ans = a * b - c * p;
    if(ans < 0) ans += p;
    else if(ans >= p) ans -= p;
}

二进制状态压缩

取出第k位 (n >> k) & 1
取出后k位 n & ((1 << k) - 1)
取反第k为 n ^ (1 << k)
第k位赋值1 n | (1 << k)
第k位赋值0 n & (~(1 << k))

例题
例二状压DP。。。
POJ2288打了*先不讨论

Hamilton路径
求从节点0到节点n - 1的最短Hamilton路径。其中Hamilton路径指从1~n恰好不重不漏的经过每个节点一次。n≤20n≤20

状态设计:用dp[s][i]表示在节点i处状态为s,s的每一位分别指代某个节点是否访问过。
初始化:dp[s][i] = INF, dp[1][0] = 0表示从起点出发的路一开始长度是0。
转移:dp[s][i] = min{dp[s ^ (1 << j)][k] + w[k][j]},其中k、j已访问过(用i >> j & 1即可判断),表示从j节点没有被访问过的情况转移到这里。
结果:dp[(1 << n ) - 1][n - 1],表示终点处且每个点都访问过的情况。
复杂度O(n2⋅2n)O(n2⋅2n)

#include <bits/stdc++.h>
using namespace std;
#define INF 0x3fffff
int w[26][26];
int dp[1 << 20][20];
int n, m, f, t, va;
int main() {
    scanf("%d%d", &n, &m);
    memset(w, 0x3f, sizeof w);
    for(int i = 1; i <= m; ++i) {
        scanf("%d%d%d", &f, &t, &va);
        --f; --t;
        w[f][t] = va;
        w[t][f] = va;
    }
    memset(dp, 0x3f, sizeof dp);
    dp[1][0] = 0;
    int M = 1 << n;
    for(int i = 1; i < M; ++i) {
        for(int j = 0; j < n; ++j)
        if(i >> j & 1)
            for(int k = 0; k < n; ++k)
            if(i >> k & 1)
                dp[i][j] = min(dp[i][j], dp[i ^ 1 << j][k] + w[k][j]);
    }
    cout<<dp[M - 1][n - 1];
    return 0;
} 
/*
4 5
1 2 6
2 3 7
0 3 5
1 3 1
2 0 2
*/

其它运算

成对变换:
n为偶数,n ^ 1为n + 1
n位奇数,n ^ 1为n - 1

lowbit:

inline int lowbit(int x) {return x & -x;}

用来取出最低位的1及其后面的0构成的数值。
原理好麻烦的样子(x

JAVA进阶面试题:如何设计一个高并发系统? 如何设计一个高并发系统? 面试官心理分析 说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先。 如果你确实有真才实学,在互联网公司里干过高并发系统,那你确实拿 offer 基本如探囊取物,没啥问题。面试官也绝对不会这样来问你,否则他就是蠢。 假设你在某知名电商公司干过高并发系统,用户上亿,一天流量几十亿,高峰期并发量上万,甚至是十万。那么人家一定会仔细盘问你的系统架构,你们系统啥架构?怎么部署的?部署了多少台机器 阅读详情

相关推荐

【全解析 | PTA】浙大版《Python 程序设计》题目集-第一章

Python浙大版PTA题解

wzhh_的博客 5527

算法入门一

二叉树创建 function BinaryTree() { this.root = null; this.insert = function (key) { var node = new BinaryNode(key); if (this.root) { this._insertNode(node, this.root); } else { this.root = new BinaryNode(key); }

lyd的博客 184

基于深度强化学习的无地图移动机器人导航:让机器人在未知环境中智能前行

虽然仍然面临sim-to-real差距、安全性保证等挑战,但随着算法的不断改进和计算能力的提升,基于DRL的无地图导航技术将在服务机器人、工业自动化、太空探索等领域发挥越来越重要的作用,为人类生产和生活带来更大便利和价值。对于复杂环境下的动态目标导航问题,研究人员提出了多智能体协同控制算法(如Teamwork-Net算法),通过多个智能体分别控制机器人的运动速度与运动方向,协同实现更高效、更稳定的导航性能。深度强化学习结合了深度学习的感知能力和强化学习的决策能力,非常适合解决无地图导航问题。

weixin_45131592的博客 902

导弹防御塔---二分图匹配《lyd算法进阶》

题目描述 Freda控制着N座可以发射导弹的防御塔。每座塔都有足够数量的导弹,但是每座塔每次只能发射一枚。在发射导弹时,导弹需要T1秒才能从防御塔中射出,而在发射导弹后,发射这枚导弹的防御塔需要T2分钟来冷却。 所有导弹都有相同的匀速飞行速度V,并且会沿着距离最短的路径去打击目标。计算防御塔到目标的距离Distance时,你只需要计算水平距离,而忽略导弹飞行的高度。导弹在空中飞行的时间就是 (D...

sgh666666的博客 715

STM32CubeMx + FatFs 实战:SD卡DMA传输中断回调问题深度解析

本文深度解析了在STM32CubeMx环境下,结合FatFs文件系统并使用DMA进行SD卡读写时,程序可能出现的“卡死”问题。核心原因在于HAL库的弱函数回调机制未被正确处理,导致DMA传输完成中断后,状态机锁死。文章提供了两种实战修复方案:直接修改HAL库文件或在用户代码中重写回调函数,并给出了关键的配置检查点与调试技巧,帮助开发者彻底解决SD卡DMA传输中断回调失效的难题。

weixin_29176179的博客 330

DMDiff(2025):一种基于SAR光学数据融合的双分支多模态条件引导扩散模型-k学长深度学习专栏

DMDiff提出了一种基于扩散模型的多模态遥感图像去云方法,通过双分支网络分别提取SAR的结构信息和光学图像的光谱特征,再利用跨模态注意力机制实现特征融合。创新性地采用IAP策略直接预测无云图像而非噪声,有效解决了传统方法在遥感图像处理中易出现的光谱失真问题。实验表明该方法在PSNR等指标上显著优于现有技术,但存在计算量大、生成速度慢等不足。未来可结合加速采样策略和几何约束进一步优化。

423

进阶指南---基本算法【阅读笔记】

成对变换 对于非负整数\(n\): 当\(n\)为偶数时,\(n xor 1\)等于\(n+1\) 当\(n\)为奇数时,\(n xor 1\)等于\(n - 1\) “0 和 1”, “2 和 3”, “4 和5”......关于\(xor 1\)运算构成“成对变换” 这一性质常用于图论邻接表中边集的存储。在具有无向边(双向边)的图中把一对正反方向的边分别存储在邻接表数组的第\(n\)...

weixin_30467087的博客 118

EMD (经验模态分解) 在 C++ 中的实现指南

EMD 是由 Norden E. Huang 等人在1998年提出的一种适用于非线性和非平稳信号的分析方法。对称性:IMF 的上下包络对称。零交叉点:IMF 的零交叉点数量与极值点数量相同或相差一个。本文详细介绍了如何在C++中实现EMD,包括理论背景、算法步骤、代码实现和优化等内容。通过丰富的代码示例和详细的解释,希望能够帮助读者掌握EMD的基本原理,并能够在实际项目中灵活应用。未来,随着信号处理技术的不断发展,EMD及其变种(如EEMD、CEEMDAN等)将继续在各个领域发挥重要作用。

qq_38334677的博客 1749

linu编程经典书籍介绍

成为一名精通 Linux 程序设计的高级程序员一直是不少朋友孜孜以求的目标。根据中华英才网统计数据,北京地区 Linux 程序员月薪平均为 Windows 程序员的 1.8 倍、Java 程序员的 2.6 倍, Linux 程序员年终奖金平均为 Windows 程序员的 2.9 倍。同时数据显示,随着工作经验的增长, Linux 程序员与 Windows 程序员的收入差距还有扩大的趋势。Denis 认为,要学好 Linux 环境下的编程,关键是要看对、选对、学会正确的书籍。可以说,如果你选对了 Linux编

Wendell的计算机之旅 1009

【WRF-Chem第二期】WRF-Chem有关 namelist 详解

【WRF-Chem第二期】WRF-Chem有关 namelist 详解

WW、forever的博客 2156

ESP32-C3模组上跑通OTA升级(3)

ESP32-C3模组上跑通OTA升级(3)

phmatthaus的专栏 1351

《算法竞赛进阶》学习笔记

N数码判定性问题 大意就是给你两个N数码(N为奇数),判定是否能互相转化的问题 首先展开成一维,空格不计 如 1 2 3 4 5 6 7 0 8转化为1 2 3 4 5 6 7 8 然后判断两个序列的逆序对数奇偶性是否相同,相同则有解 证明: 在空格左右移动的时候,展开序列不改变 在空格上下移动的时候,展开序列中有一个数会前移(后移)n-1位,由于n为奇数则n-1为偶数。于是改...

Rose_max的博客 1252

【TC3xx芯片】TC3xx DMA模块详解

TC3xx DMA模块详解

qq_36056498的博客 5917

Android中如何修改编译的资源ID值 默认值是0x7F 可以随意改成0x02 0x7E

Android中如何修改编译的资源ID值 默认值是0x7F 可以随意改成0x02 0x7E

qq_44906504的博客 3552

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 210

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 313

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 571

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 20

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 749

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 369

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 170

408 算法 04|主元素与三元组最小距离:两种“扫描时做决定“的思路

2013(41) 的主元素用摩尔投票一遍选出候选,但真正的考点是"选完必须验票";2020(41) 的三元组最小距离,三指针每次只挪最小的那个,靠的是 D=2×(max−min) 这个恒等式。两套完整 C 代码加真实输出,附官方评分档位表。

m0_56226131的博客 406

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 83

算法61,判定是否为字符重排

两字符串能互为重排 ⇔。

sheshibenniaodan的博客 218

算法日常・每日刷题--<动态规划>32

给定严格递增的正整数数组,求最长斐波那契子序列长度。使用二维DP,dp[i][j]表示以arr[i]、arr[j]为最后两项的序列长度,初始化均为2。通过哈希表快速查找前一项target = arr[j] - arr[i],若存在且下标小于i,则状态转移:dp[i][j] = dp[k][i] + 1。遍历更新全局最大长度,最终若结果小于3则返回0。时间复杂度O(n²),空间复杂度O(n²)。

2503_92261635的博客 178
上一篇: codeforces914C Travelling Salesman and Special Numbers 二进制特性+组合数学+递推
下一篇: exgcd 重修
LittleRewriter
博客等级 码龄9年 35粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值