摘要: 整数二分 在单增序列中寻找 $\geq x$ 的数中最小的一个, 即若有多个相同的 $x$ 则找到最前面的那个若没有 $x$ 则找到 $\geq x$ 的最小的那个 while(l < r) { int mid = l + r >> 1; //取不到r if(a[mid] >= x) r = mid 阅读全文
posted @ 2020-10-24 11:36 yikanji 阅读(147) 评论(0) 推荐(0)
摘要: 许多算法在结构上是递归的, 为了解决问题,往往一次或多次调用其自身(递归)解决相关的子问题 分治法的思想 讲原问题分为几个规模较小但类似于原问题的子问题, 再递归地求解这些问题, 然后再合并这些子问题的解来建立原问题的解(最优子结构) 分治模每层递归的三个步骤 分解原问题为若干子问题, 这些子问题是 阅读全文
posted @ 2020-10-23 22:58 yikanji 阅读(69) 评论(0) 推荐(0)
摘要: 指针指向同一个序列 最长连续不重复子序列 给定一个长度为 $n$ 的整数序列, 请找出最长的不包含重复的数的连续区间, 输出它的长度 双指针的使用 指针 $i$ 遍历整个序列, $j$为当前以 $i$ 为结尾的不产生重复的数的序列的左端点最远能到哪里 可以开一 $cnt$ 数组记录在 $j$ ~ $ 阅读全文
posted @ 2020-10-07 11:52 yikanji 阅读(275) 评论(0) 推荐(0)
摘要: 双指针算法 双指针算法的核心就是依据某些性质(单调性), 将本来需要两重循环 $ O(n^{2}) $ 来枚举的优化成 $ O(2 n) $ 的, 即两个指针总共循环的次数不超过 $2n$ 次 双指针算法用处广泛, 如在快排、归并排序中使用 思考方式 先写一个暴力算法, 然后找出两个指针之间的规律( 阅读全文
posted @ 2020-10-07 10:49 yikanji 阅读(277) 评论(0) 推荐(0)
摘要: 位运算的应用 1、不用加减乘除做加法 写一个函数, 求两个整数之和, 要求在函数体内不得使用+、-、×、÷ 四则运算符号 两个数相加的和 $=$ 异或和 $+$ 进位 即 $a + b = a ^ b + (a $ & $ b) << 1 $ 其中, $a$ & $b$ 具有 $ \leq min( 阅读全文
posted @ 2020-10-06 17:16 yikanji 阅读(192) 评论(0) 推荐(1)
摘要: 按位枚举确定答案 在二进制数中, 高位取1所产生的数比所有低位都取1形成的数都大, 即 $ 1 << n > (1 << n) - 1 $ 可以在确定答案的时候运用贪心的思想, 即能在高位取1就在高位取1 起床困难综合征 给定 $n$ 个运算, 每个运算中有两个参数, 操作 $ (or/xor/an 阅读全文
posted @ 2020-10-06 16:58 yikanji 阅读(133) 评论(0) 推荐(0)
摘要: 二进制状态压缩 使用一个长度为 $m$ 的二进制数来表示并存储一个长度为 $m$ 的 $bool$ 数组 通过一系列操作可以实现原 $bool$ 数组中对应下标的存取 操作 运算 取出整数n在二进制表示下的第k位 取出整数n在二进制表示下的第0 ~ k-1位 把整数n在二进制表示下的第k位取反 对整 阅读全文
posted @ 2020-10-06 15:51 yikanji 阅读(145) 评论(0) 推荐(0)
摘要: 快速幂 快速地求出 $ a^{b}\;mod\;p $, 其中 $ 1 \leq a,\,b,\,p \leq 10^{9} $ 每一个正整数都有其唯一的二进制表示, 显然每一个正整数也都可以唯一地表示为若干指数不重复的2的次幂的和 即, 设 $b$ 在二进制表示下有 $k$ 位, 其中第 $i\, 阅读全文
posted @ 2020-10-06 15:00 yikanji 阅读(183) 评论(0) 推荐(1)
摘要: lowbit运算 $ lowbit(n) $定义为非负整数$ n $在二进制表示下最低位的"1"及其后面的所有"0"构成的数值 如当$ n = 10 $, 其二进制表示为$ (1010) $, 则$ lowbit(10) = 2 = (10) $ $ lowbit(n) $的公式推导 设整数 $n$ 阅读全文
posted @ 2020-10-06 13:13 yikanji 阅读(268) 评论(0) 推荐(0)
摘要: 位运算的基本认识 在$m$位二进制数中, 通常称最低位为第$0$位, 从右到左依次类推, 最高位为第$m - 1$位 4种基本位运算 与 或 非 异或 and, & or, | not, ~ xor, ^ 补码 32位无符号整数 unsigned int: 直接把这32位编码看作32位二进制数N32 阅读全文
posted @ 2020-10-03 15:53 yikanji 阅读(410) 评论(0) 推荐(0)