左神课程学习
文章平均质量分 68
记录下学习左神课程的笔记,帮助自己理解课程内容和复习
chbmvdd
见心明性 知行合一
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法讲解089【必备】贪心经典题目专题1
将n个棍子合成一个,一定要n-1次,第一做了选择a+b=c,后面会累加n-2次c,所以每次选最小的两个合成?扔掉大的,留下小的,课程数量不变,后面空间增大。小根堆的大小就是当前开始位置的最大重合数。几个线段冲进来(也就是超过开始位置)?参数简单可以,参数复杂还是得靠逻辑。2.准备一个小根堆(存放结束位置)一个区间可能遇到怎样重合的区间?从左往右遍历,以某一个左端点为界。自然智慧,从简单的例子开始尝试。策略:依据拼接后的结果来排序。《=当前开始位置的都弹出。按结束时间排序,自然智慧。哦,之前的选择会累积加。原创 2025-06-13 15:49:30 · 514 阅读 · 0 评论 -
算法讲解040【必备】N皇后问题-重点是位运算的版本
本文介绍了两种解决N皇后问题的算法实现。第一种方法使用数组记录皇后位置,通过递归和冲突检查求解;第二种更高效的位运算方法,利用二进制位表示皇后位置限制,显著提升性能。测试结果显示,在14皇后问题时,位运算方法比数组方法快约100倍,且能在10秒内完成16皇后问题的求解,展示出位运算在解决约束满足问题上的优势。代码中还包含了两种方法的详细实现和性能对比测试。原创 2025-06-08 11:10:22 · 262 阅读 · 0 评论 -
算法讲解033【必备】位运算实现加减乘除
运算关键位操作等价逻辑加法a ^ b无进位和 + 进位减法加补码(负数)乘法循环左移并累加分解为 2 的幂次和除法右移比较并减去逆向乘法(试减)这些函数展示了如何用位运算模拟算术运算,适合面试或底层编程学习,但实际开发中应直接使用运算符。原创 2025-06-08 10:05:02 · 486 阅读 · 0 评论 -
算法讲解032【必备】位图
巧妙地reverse,每一块都要考虑reverse,面向对象的设计方法,利用变量来记录就不需要遍历查找了。是C++标准库中的一个模板类,用于处理固定大小的位序列。它提供了一种高效的方式来存储和操作二进制数据。bitset非常适合需要高效位操作的应用场景,如状态压缩、位掩码、集合运算等。原创 2025-06-07 11:27:00 · 466 阅读 · 0 评论 -
算法讲解031【必备】位运算的骚操作
right大于left,那么right-1一定存在,并且right-1遇上right一定会把最右边的一给消掉。利用某一个区间来表示这个区间所含有的一的数量,然后局部推导到整体,有点像递归呀。分治:部分逆序一直到整体逆序,利用递归来反向思考挺好。因为与运算中,只要有一个是0,就都是0了。把最左边1的后面全刷成1,然后加一。right小于等于left。原创 2025-06-07 10:17:44 · 321 阅读 · 0 评论 -
算法讲解030【必备】异或运算的骚操作(确实骚)
位运算确实是一个极其精妙的东西,计算机整个世界都有种精妙的逻辑感。原创 2025-06-07 09:05:56 · 249 阅读 · 0 评论 -
算法讲解042【必备】对数器打表找规律的技巧
1.没思路就写写暴力,打表找规律2.暴力:用最好理解,最正确的方式,枚举出所有可能性递归:思考清楚逻辑,当前的决策,终止条件循环嵌套:枚举啥?原创 2025-06-06 11:38:05 · 314 阅读 · 0 评论 -
算法讲解041【必备】最大公约数、同余原理
Stein算法是一种计算两个非负整数最大公约数(GCD)的高效方法,由德国数学家Josef Stein于1967年提出。它通过位运算和减法来优化传统的欧几里得算法,特别适合计算机实现。// 给定三个整数 n , a , b ,返回第 n 个神奇的数字。// 因为答案可能很大,所以返回答案 对 1000000007 取模。减,(a-b)%m=(a%m-b%m+m)%m=(a-b+m)%m。// 一个正整数如果能被 a 或 b 整除,那么它是神奇的。加和乘,直接每一步取模;原创 2025-06-06 10:44:22 · 798 阅读 · 0 评论 -
算法讲解005【入门】对数器-验证的重要手段
【代码】算法讲解005【入门】对数器-验证的重要手段。原创 2025-06-06 09:30:36 · 196 阅读 · 0 评论 -
算法讲解088【必备】动态规划专题总结与预告
背包动态规划(DP)是动态规划中的经典问题,其核心在于在有限容量的背包中选择物品以达到最优解(如最大价值、最小成本等)。问题的动态规划方法,其核心思想是通过枚举区间的分割点,逐步求解更大区间的最优解。1.尝试,进行逻辑分析,分类讨论,观察规律,从简单到复杂,正难求反,利用答案的集合性质等等,观察数据量。:在 DP 求解最优值后,通过反向追踪状态转移路径,还原具体方案(如选哪些物品、如何分割区间等)。在动态规划(DP)问题中,除了掌握各类问题的状态设计和转移方程外,。原创 2025-06-05 10:58:12 · 1709 阅读 · 0 评论 -
算法讲解087【必备】动态规划中根据数据量猜解法的技巧
如果你当前的能力大于等于i号怪兽的能力,你可以选择直接通过,且能力不会下降。如果你当前的能力小于i号怪兽的能力,则必须付出b[]的钱贿赂这个怪兽。假设a[i]数值的范围不大,但是b[i]数值的范围很大,又该怎么做?开始时你的能力是0,你的目标是从1号怪兽开始,通过所有的n只怪兽。但你依然可以选择贿赂这个怪兽,然后怪兽的能力直接累加到你的能力上。假设a[]数值的范围很大,但是b[]数值的范围不大,该怎么做?然后怪兽就会加入你,他的能力a[]直接累加到你的能力上。希望做到集合A和集合B的累加和相差不超过1。原创 2025-06-05 10:06:32 · 1019 阅读 · 0 评论 -
算法讲解086【必备】动态规划中得到具体决策方案的技巧
对于所需求的技能列表req_skills中列出的每项技能,团队中至少有一名成员已经掌握。编号为i的备选人员people[]含有一份该备选人员掌握的技能列表。一共有n个工具,每个工具都有自己的重量a、阻力b、提升的停留时间c。每个数字看作是单独的字符,比如120认为比36的字典序大。请你返回规模最小的必要团队,团队成员用人员编号表示。返回最久的停留时间和下标字典序最小的选择工具的方案。因为背包有限,所以只能背重量不超过m的工具。如果有多个答案,请输出其中字典序最小的。下标方案整体构成的字符串保证字典序最小。原创 2025-06-03 21:34:19 · 749 阅读 · 0 评论 -
算法讲解085【必备】数位dp-下
如果一个数字,存在长度至少为2的回文子串,那么这种数字被称为萌数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。windy想知道[a,b]范围上总共有多少个windy数。比如101、110、111、1234321、45568。给定一个正整数n,请你统计在[0,n]范围的非负整数中。给定两个正整数a和b,求在[a,b]范围上的所有整数中。有多少个整数的二进制表示中不存在连续的1。太优美了,这个对于可能性的分析太妙了。求[,r]范围上,有多少个萌数。不含连续1的非负整数。原创 2025-06-02 21:19:48 · 319 阅读 · 0 评论 -
算法讲解084【必备】数位dp-上
1.灵活利用预处理结构2.记忆化搜索解决数位dp问题比较好3.边界条件要考虑清楚,不要空想,利用例子4.分类讨论,对于可能性的展开很重要5.逆向思维,集合的知识点灵活运用。原创 2025-05-30 18:15:14 · 735 阅读 · 0 评论 -
算法讲解083【必备】动态规划中用观察优化枚举的技巧-下
1.就是你有好几份工作可以选择,一段时间内只能打一份工,从a点开始打工,到b点结束,获得c的报酬,结束后可以立刻开始新的工作。情况二: 选择当前工作,获得当前酬劳,并且在之前的工作里面找到一个结束时间早于当前工作开始时间的工作。2.对于一份工作,可以选择打,也可以选择不打,前面的工作打与不打会影响后面的工作是否可以被选择。观察发现,j为在一个单调递增数组的满足条件的最右下标,可以使用二分,省掉一点遍历的时间。观察严格动态规划的图,依赖的是前面的累加和,很显然可以利用变量维护窗口累加和。原创 2025-05-29 21:06:29 · 1004 阅读 · 0 评论
分享