![](https://img-blog.csdnimg.cn/fc8a0842faf64f378f643c63e86d178c.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法竞赛进阶指南笔记
文章平均质量分 74
里面包含博主在啃书过程中的解题代码及思路
skynesser
这个作者很懒,什么都没留下…
展开
-
0x01位运算——起床困难综合症
0x01位运算——起床困难综合症思路分析位运算的特点之一就是二进制下运算不进位。因此在$~x_{0}~$可以任意选择的情况下,参与位运算的各个位(bit)是无关的。而每一个的初始取值只有0和1两种情况,所以我们只需要枚举每一位,比较初始取值0和1情况下,经过n个防御门后得到的值,在0和1这两种情况下取答案较大的即可。同时,因为x0x_{0}x0的取值是有范围限制的,所以我们在最终大小相同的情况下,保证x0x_{0}x0尽可能小,即在初始值0和1经过n个防御们后得到值相同时,我们会原创 2022-03-15 15:01:57 · 414 阅读 · 0 评论 -
0x01位运算——最短Hamilton路径
0x01位运算——最短Hamilton路径说明本题的正解——状态压缩dp,我们将在0x56节详细介绍思路分析我们可以使用一个**n维的bool数组**记录下某时刻经过了哪些点,未经过哪些点,而这里的**n维的bool数组**,可以用一个n位的二进制数代替。在这个二进制数中,第i位为1则代表这个点已经被拜访过。用F[i,j]F[i,j]F[i,j]表示当前经过了那些点(用 i 表示),现在在 j 点的最短距离。状态转移方程(不做详解):F[i,j]=min(F[i,j],F原创 2022-03-15 14:43:25 · 71 阅读 · 0 评论 -
0x01位运算——64位整数乘法
0x01位运算——64位整数乘法问题简析C++内置的最高整数类型是64位,所以显然不能通过直接运算得到答案,我们需要一些特殊的处理方法,在这里提供两种方法。思路一类似于快速幂的思想,把b拆分成k位二进制...原创 2022-03-15 14:15:28 · 1457 阅读 · 0 评论 -
0x01位运算——a^b
0x01位运算——a^b题目:思路分析如果b在二进制下有k位,每一位为Ci如果b在二进制下有k位,每一位为C_{i}如果b在二进制下有k位,每一位为Ci可以将b分解为:可以将b分解为:可以将b分解为:b=Ck−1∗2k−1+Ck−2∗2k−2+...+C0∗20b=C_{k-1}*2^{k-1}+C_{k-2}*2^{k-2}+...+C_{0}*2^{0}b=Ck−1∗2k−1+Ck−2∗2k−2+...+C0∗20因为2k−1=(2k−2)2,所以很容易用递推求出每一个乘积项原创 2022-03-15 09:43:01 · 399 阅读 · 0 评论 -
0x01——位运算
0x01———位运算运算符优先级从左到右优先级依次降低加减移位比较大小位与异或位或+,-<<,>><,>==,!=&xor(C++^)|原创 2022-03-14 17:14:33 · 3453 阅读 · 0 评论