- 博客(35)
- 收藏
- 关注
原创 ACM校赛
题目要求找出满足特定条件的正整数对(P,Q)的个数,其中P和Q的最大公约数为x0,最小公倍数为y0。关键解题思路是: 首先检查y0是否能被x0整除,否则直接输出0 通过数学推导可知,P和Q的乘积等于x0和y0的乘积 遍历可能的P值(x0的倍数),计算对应的Q值 验证每对(P,Q)是否满足gcd(P,Q)=x0的条件 代码实现时需要注意: 使用long long防止整数溢出 优化循环步长为x0以提高效率 使用内置__gcd函数进行验证 最终统计满足条件的数对个数并输出。样例输入3 60时,输出4,对应4组符合
2026-05-06 23:23:12
46
原创 [特殊字符]【算法日记 14】数论入门神题:最大公约数与最小公倍数的“乘积守恒定律”
long long是保命符:题目范围虽然是10510^5105,但x0×y0x0×y0会达到101010^{10}1010,远超int的 21 亿上限。不写long long必炸!核武器:C++或<numeric>库自带的这个函数效率极高,不需要自己手写辗转相除法。整除判断的低级错误:记住,判断“能否整除”用的是a % b == 0,而不是a / b == 0。这是新手最容易在键盘上滑手的地方。对称性优化(进阶):如果你想更进一步,可以只枚举到x0×y。
2026-05-06 23:19:32
309
原创 [算法日记12]加法题
这两行可以加快输入输出速度,防止因数据量大(字符串长度不超过 2×10⁵)导致超时。你得到了黑板上的式子,请你用小雷喜欢的方式写出来并计算出答案。,这样可以处理更大的数字,避免因单个数字过大导致的运行错误。老师在黑板上写了一个加法式子,小雷想用他喜欢的方式写出来。里剩下的最后一个数字加入数组,解决你通过率低的核心问题。一行一个字符串(仅由加法符号以及数字组成)。小雷喜欢从大到小写下自己的算式并算出答案。第一行一个字符串是符合小雷喜好的式子。第二行一个数字是这个算式的答案。这一步是为了把循环结束后。
2026-04-19 22:52:47
44
原创 【算法日记 11】贪心之美:用“相邻交换法”秒杀乱序求极值问题
相邻交换法”是算法竞赛证明贪心策略的最强武器之一。当你遇到“一维数组排列求极值”、“任务调度求最小延迟”、“打怪兽求最小掉血”等题目时,只要你在脑子里想象揪出相邻的两个元素换一换,往往就能一秒击碎出题人的障眼法,写出完美无瑕的自定义sort比较器!
2026-04-10 17:12:44
286
原创 【算法日记 10】贪心思维的究极化简:不要模拟,直击本质!
在算法题中,如果遇到要求“某个条件始终成立”,可以试着去构造一个**“最有利于该条件成立的极端场景”**。这道题看似是一道复杂的数组重排题,其实只要看穿了“把偶数全放前面”的最优策略,它就瞬间退化成了一道只有几行代码的求和比较题。代码的长度,往往与思维的深度成反比!
2026-04-10 14:51:35
188
原创 【算法日记 09】蓝桥杯实战:突破整数极限,拥抱“字符串思维”
这道题看似考的是“找规律”,实际上考的是选手对数据范围极限的敏感度。在大厂笔试和算法竞赛中,有一条极其重要的铁律:只要不需要对数字进行加减乘除运算,仅仅是为了输出显示,永远优先使用。字符串没有所谓的“位数限制”,别说 100 位,就算 10 万位,它也能像接火车一样轻松拼在一块。就会被瞬间撑爆(Integer Overflow),变成一个极其诡异的负数,后面的 80 多行全军覆没!第 1 行:2 第 2 行:20 第 3 行:202 第 4 行:2026 第 5 行:20262 …题目要求基于循环字符串。
2026-04-09 11:11:05
65
原创 【算法日记 08】一行代码秒杀!当“程序模拟”变成“数学脑筋急转弯”
摘要 一道看似复杂的算法题被巧妙转化为数学脑筋急转弯。题目要求统计一组正整数中能被分解为连续递增整数序列之和(长度≥3,允许负数)的数字个数。通过数学分析发现,任何≥2的正整数都可以通过构造对称的正负序列(如[-4,-3,...,5]求和为5)满足条件,而1则无解。最终解法仅需统计输入中≥2的数字个数,时间复杂度O(1)。这揭示了算法竞赛中数学洞察力往往比复杂代码更重要。
2026-04-08 13:08:32
220
原创 【算法日记 07】告别 TLE!用预处理魔法秒杀“动态中位数”问题
这篇文章介绍了一种高效解决"动态中位数"问题的算法优化方法。针对暴力模拟法会超时的问题,作者提出了基于排序和数学规律的"双护法"策略:预先排序数组后,根据删除元素的位置直接确定新中位数,将时间复杂度从O(N²)降至O(N log N)。文章还详细解析了C++实现中常见的三个陷阱,包括数组初始化错误、数值比较混淆和输出效率问题,并给出了正确的代码实现。这种方法通过数学规律避免了实际删除操作,大幅提升了算法效率。
2026-04-08 00:13:58
315
原创 【算法日记 06】计算几何:避开数学计算中的“隐形炸弹”
计算几何算法中的三大"隐形炸弹"及解决方案:1️⃣ 整型溢出问题:大数乘法需强制转为浮点运算(如666.0*666.0);2️⃣ 舍入精度偏差:避免setprecision(0)直接输出,改用round()函数确保四舍五入;3️⃣ 浮点数比较误差:定义极小值eps(1e-8),用fabs(a-b)<eps替代==判断。实战建议:所有涉及double的常数必须加.0,输出整数时优先使用round(),浮点比较采用误差容忍法。这些技巧能有效避免WA和程序崩溃。
2026-04-07 00:13:48
162
原创 【算法日记05C++ 进阶】告别繁琐的 cmp 函数:用 Lambda 表达式秒杀“多级排序”
在算法竞赛或日常开发中,我们经常遇到的需求。X传统的做法是写一个全局bool cmp函数,或者重载struct的operator<。但这种做法在处理“局部变量”(如X)时非常痛苦。今天分享一个现代 C++ 的神器——。
2026-04-07 00:13:27
30
原创 【算法日记04】贪心算法实战:从“林黛玉倒茶”彻底顿悟“向上取整”魔法
写代码时,切忌把“计算总需水量”和“模拟倒水回合”放在同一个循环里搅和。先算出总目标,再用公式一步求解,逻辑才会无懈可击。只要涉及到“装载、运输、分批次”的问题,永远不要忘记 C++ 除法的“砍尾巴”特性,立刻条件反射出向上取整。遇到“最少/最多”且没有复杂状态依赖的题目,第一时间考虑sort排序找局部最优解。
2026-04-06 02:23:45
243
原创 【动态规划09】手撕 0-1 背包:从二维推导到一维滚动数组的极致优化
📝 0-1背包问题动态规划优化指南 本文系统讲解了0-1背包问题的动态规划解法及其优化过程。首先介绍二维DP状态定义dp[i][j]表示前i件物品在容量j下的最大价值,随后通过状态转移方程dp[j] = max(dp[j], dp[j - weight[i]] + value[i])实现降维优化。重点解析了必须逆序遍历容量的原因:防止同一物品被重复选取。文章提供了C++11标准模板代码,包含输入处理和核心DP循环,并给出常见错误检查清单,如数组越界、输入遗漏等问题。最后强调理解逆序遍历的"时空错
2026-04-06 00:14:50
1121
原创 【算法日记03】从内存爆炸(MLE)到满分通关:彻底悟透“差分”与“扫描线”算法
处理区间重叠问题,绝对不要去遍历区间内部!“只看首尾(+1/-1)”是通往高阶算法的必经之路。面对值域极大(时间跨度极大)但实际事件很稀疏的数据,千万不要开大数组,直接上存事件,然后sort排序。这就是经典的离散化 / 扫描线思想。pair配合sort默认比对第一个元素的潜规则极其好用。C++11 的范围for循环()能让代码极具现代感且清晰易读。永远对数据范围保持敬畏,关键的统计变量记得用long long。
2026-04-05 23:41:03
310
原创 高校学生综合素质评价系统数据库设计
经过对各个局部模块的整合,消除冗余的实体和联系,形成如下全局 E-R 模型。图 4.1 高校学生综合素质评价系统全局 E-R 图。
2026-04-04 16:35:50
333
原创 【动态规划合集08】看似简单的数学题,却藏着 DP 逻辑的深坑:秒杀《整数拆分》
为了凑代码而强行初始化,是不负责任的做法。我们只做有物理意义的初始化:既然题目规定。
2026-03-29 10:28:36
421
原创 【动态规划合集06】进阶挑战!当地图里长出了石头,如何秒杀《不同路径 II》
动态规划不仅是推导数学公式,更是对“边界条件”和“极端情况”的精细化管理。至此,我们的【DP 路径系列】已经彻底圆满通关!你已经具备了单挑绝大多数中等难度 DP 题的实力。下一期,我们将暂时放下 DP,去解锁算法竞赛中另一种极其暴力、能在O1O(1)O1时间内秒杀海量区间求和的终极魔法——【前缀和】!准备好迎接降维打击了吗?我们不见不散!
2026-03-29 09:23:25
284
原创 【动态规划合集05】从“上帝视角”降维打击!彻底通关二维 DP《不同路径》
从一维的《爬楼梯》到二维的《不同路径》,我们发现 DP 的套路其实万变不离其宗。只要找准了状态转移方程和初始边界,再复杂的地图也能被我们用代码填满。到这里,咱们的 DP 新手村试炼已经非常圆满了。下一篇,我们将换个赛道,去见识一种能让你在O1O(1)O1时间内瞬间求出几十万个数字之和的逆天魔法——“前缀和”算法!关注专栏,我们不见不散!
2026-03-28 22:17:30
571
原创 【动态规划合集07】惊天大反转!当 DP 遇到“自由分组”,小心出题人的贪心陷阱!
在拿到题目时,不要上来就死磕状态转移。先看清题目条件,如果允许“自由改变顺序”,大概率是排序+贪心;如果严格“不可改变顺序”,才是真正的 DP 战场!不过不用遗憾,前面踩过的 DP 坑绝对没有白费!因为“不可重排的连续购买优惠”是笔试常客,咱们相当于一次性把两种题型全部打穿了!到这里,咱们的动态规划第一阶段可以说是圆满结业了。下一期,我们将拔出早就蓄谋已久的新武器——能在O1O(1)O1时间内瞬间求出几十万个数字之和的**【前缀和】终极魔法**!准备好迎接真正的速度碾压了吗?我们不见不散!
2026-03-28 22:13:12
346
原创 【动态规划合集04】不仅要爬到顶,还要最省钱!秒杀《最小花费爬楼梯》
这道题完美地展示了 DP 中**“求最值(min/max)”**的思想。只要你找准了“免费起点”,并且看透了它依然是“只依赖前两项”的斐波那契变体,这道题就能被你按在地上摩擦!你的动态规划底盘越来越稳了,下一期,我们将迈向全新的领域,敬请期待!
2026-03-27 20:53:42
514
原创 【动态规划合集03】爬楼梯 Pro Max!用一次 Bug 顿悟“完全背包”的终极奥义
在上一篇【动态规划合集02】中,我们秒杀了每次只能走 1 阶或 2 阶的经典《爬楼梯》。今天,我们将通过这道《爬楼梯 Pro Max》,不仅要把它拿下,还要借机扒掉**“完全背包求排列数”**的底裤!🔗。
2026-03-27 00:02:25
517
原创 【动态规划合集02】一眼看破本质!用“斐波那契”秒杀经典面试题《爬楼梯》
假设你正在爬楼梯。需要nnn阶你才能到达楼顶。每次你可以爬 1 阶或 2 阶。请问你有多少种不同的方法可以爬到楼顶?我们要算出爬到第iii阶楼梯的方法数(记为dp[i]仔细想想,因为每次只能跨 1 步或 2 步,所以想踏上第iii阶,你最后一步从第i−1i-1i−1阶跨1步上来。从第i−2i-2i−2阶跨2步上来。这意味着什么?意味着到达第iii阶的总方法数,等于到达第i−1i-1i−1阶的方法数,加上到达第i−2i-2i−2阶的方法数!。
2026-03-26 22:14:26
386
原创 【动态规划合集01】推开DP的大门:从“斐波那契数列”领悟核心三步曲!
恭喜你,通过这篇博客,你已经成功推开了动态规划的大门!找状态、定初值、写方程。下一篇,我们将用今天学到的“DP 三步曲”,去挑战一道蓝桥杯和大厂笔试极其高频的经典变种题——《爬楼梯》!想一起拿捏 DP 的朋友,关注不迷路,我们不见不散!
2026-03-26 21:47:58
363
原创 【“小白致命坑”】[特殊字符] 备战蓝桥杯C++:公式全对结果却大相径庭?警惕“消失的小数点”!
备战蓝桥杯C++几何题时,常见"整数截断"陷阱导致答案错误。本文通过一个坐标移动问题案例,分析当使用int变量存储sqrt和atan2计算结果时,会丢失小数部分造成严重误差(如正确答案1576变为1410)。关键解决方法是:1) 中间计算全部使用double类型保留精度;2) 数字字面量添加.0避免溢出;3) 最终结果用round()四舍五入。牢记"全程double+最后round"原则,确保几何题答案准确。
2026-03-23 23:02:46
241
原创 【“小白致命坑”】[特殊字符] 备战蓝桥杯C++:填空题暴力破解,当心“整型溢出”引发的无限死循环!
摘要:蓝桥杯C++填空题常需暴力破解,但易踩"整型溢出"和"无刹车if"两大坑。前者因int上限21亿,超限会变负数导致死循环;后者因缺少else if导致重复计算。正确解法应:1) 确认循环范围不超限;2) 严格使用else if分类处理;3) 用除法和取余高效拆分数字。示例代码0.2秒算出1亿内4430091个幸运数,展示暴力破解的高效写法。填空题核心是又快又准,注意细节才能稳拿满分。
2026-03-19 22:53:26
232
原创 【“小白致命坑”】[特殊字符] 备战蓝桥杯C++:别再狂开数组了!一个cmp函数秒杀“奇偶排序”
备战蓝桥杯C++时,遇到"奇偶排序"题常见3大坑:错误判断奇偶下标、误存数组下标、默认0值干扰。其实只需一个优雅解法——自定义cmp函数配合sort():1)优先比较奇偶性,奇数排前;2)同奇偶时按数值排序。这种方法避免了拆分数组的繁琐操作,一行sort(a.begin(), a.end(), cmp)即可完成复杂排序,既高效又不易出错,是算法竞赛中的降维打击技巧。
2026-03-19 22:41:05
246
原创 【“小白致命坑”】[特殊字符] 备战蓝桥杯C++:手写DFS迷宫模板最容易踩的3个“致命坑”
在备战蓝桥杯 C++ 赛道的过程中,是绝对的核心考点。很多同学在练习时,核心的“回溯逻辑”(踩上去做标记 -> 往下走 -> 撤销标记)明明已经理解透彻了,但一上机提交,却总是惨遭或,直接爆零。今天,我把新手手写 DFS 迷宫模板时最容易踩的 3 个“致命坑”总结出来,帮大家在考场上稳稳避雷,保底省奖!
2026-03-16 00:03:30
925
原创 【算法日记 #02】蓝桥杯省赛之魂:彻底搞透 DFS 与回溯模板
暴力出奇迹,骗分过初赛。而这其中的“暴力”和“骗分”,90% 都是靠DFS(深度优先搜索)完成的。今天,我们就来揭开 DFS 的神秘面纱。准备好,我们要开始真正的“硬核”特训了!简单来说就是“不撞南墙不回头”。想象你在走一个迷宫,遇到岔路口,你只管选一条路一直往前走。走到死胡同了怎么办?退回上一个岔路口,换一条路接着走。这个“退回”的动作,在算法里叫“回溯”(本质就是恢复现场)。为了帮你更直观地理解这种“一直往下搜,搜到底再退回来”的过程,可以参考这幅搜索树图:💡小贴士。
2026-03-15 17:43:04
341
原创 【算法日记 #01】[特殊字符]【算法进阶】位运算精华总结:XOR 与 OR 的实战模型[特殊字符]
本文深度复盘了异或(XOR)的归零律与恒等律,并结合蓝桥杯真题探讨了按位或(OR)的贪心填坑策略。内含‘交换变量’与‘找单身狗’经典模型,适合算法进阶练习
2026-03-15 00:47:24
407
原创 C++经典2000题:前80题基础启航篇(已归档)
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。时间限制: 2s 内存限制: 192MB 提交: 204386 解决: 59789。将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.。对于每个测试实例,输出在第n年的时候母牛的数量。n=0表示输入数据的结束,不做处理。一个华氏温度,浮点数。
2026-01-18 18:03:33
342
1
原创 Web前端
使用步骤:1.下载:进入中文官网:https://www.bootcss.com/---->>下载bootstrap v5版本中文文档---->>进入中文文档---->>左侧菜单点击“下载”---->>“下载Bootstrap生产文件”---->>在自己文件夹解压2.使用:1)css里有一个叫bootstrap.min.css文件,把这个放到我们的项目目录Bootstrap>css>bootstrap.min.css2)引入Bootstrap CSS文件。
2025-12-17 20:02:20
305
1
原创 C++排序和查找
本文介绍了三种常见算法实现:素数判断、斐波那契数列和排序算法。素数判断通过优化除数范围和特殊条件处理提高效率;斐波那契数列展示了递归和迭代两种实现方式;排序部分详细讲解了冒泡、选择、插入、合并和快速排序的原理与代码实现。此外还介绍了线性查找、二分查找和哈希查找三种搜索方法,最后给出无重复字符最长子串的滑动窗口解法。这些基础算法涵盖了常见编程问题,代码示例清晰,注重优化和异常处理。
2025-12-07 11:23:34
257
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅