自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

算法是门艺术

加油,少年!

  • 博客(117)
  • 收藏
  • 关注

原创 P3374 【模板】树状数组 1

这篇文章介绍了如何使用树状数组(BIT)高效解决区间求和与单点修改问题。文章首先分析了暴力解法的时间复杂度问题,然后详细讲解了树状数组的核心原理和优势,特别是通过lowbit操作实现O(logN)时间复杂度的查询和修改。代码部分包含了树状数组的三个关键函数:lowbit计算二进制最低位1的值,sum实现前缀和查询,add完成单点修改。最后通过主函数展示了如何初始化树状数组并处理两种操作:单点加值和区间求和。该解法特别适合处理大规模数据的动态区间查询问题。

2026-04-30 19:07:02 653

原创 P10262 [GESP样题 六级] 亲朋数

本文介绍了如何高效计算数字串中能被给定整数p整除的连续子串(亲朋数)数量。针对大长度数字串(如1e6位),传统暴力枚举法会超时。作者提出利用动态规划结合同余定理的O(L×p)解法:通过滚动数组记录以每个位置结尾的子串余数分布,利用模运算性质(j*10+num)%p进行状态转移。代码实现中,last数组存储上一位置的余数分布,dp数组计算当前位置状态,最后累加各位置余数为0的子串数。该方案避免了直接计算大数,显著提升了效率。

2026-04-30 08:15:00 493

原创 P1024 [NOIP 2001 提高组] 一元三次方程求解

这篇文章介绍了一个求解一元三次方程实根的算法。题目要求找出形如ax³+bx²+cx+d=0的方程的三个不同实根(根的范围在-100到100之间,且根间距≥1)。算法采用数值逼近方法,通过遍历整数区间[i,i+1],利用介值定理和二分法来定位根的位置。核心思路是:当函数值在区间端点异号时,使用二分法逐步缩小范围直至找到满足精度要求的根。文章详细解析了算法设计的关键点,包括浮点数误差处理、根的去重机制以及区间覆盖策略,并解释了为何选择二分法而非其他数值方法。该算法在保证正确性的同时具有较高的效率,适合编程竞赛中

2026-04-28 22:58:56 512

原创 P1873 [COCI 2011/2012 #5] EKO / 砍树

本文解析了伐木工人问题,通过二分查找确定最大锯片高度H,使得砍伐木材总量至少为M米。核心思路是利用H与木材量的单调关系进行二分搜索,时间复杂度为O(NlogmaxH)。关键点包括:1) 无需排序直接计算木材量;2) 使用long long防止数值溢出;3) 正确设置二分边界。文章还对比了暴力枚举和前缀和优化等替代方案,指出在数据规模1e6时当前解法已足够高效。最终代码通过维护可行解ans,在二分过程中不断逼近最优H值。

2026-04-28 22:51:22 428

原创 P1102 A-B 数对

题目要求统计满足A-B=C的数对个数。本文提出一种基于排序和二分查找的高效解法,时间复杂度O(NlogN)。首先对数组排序,然后对于每个元素a[i],通过二分查找快速计算a[i]+c的出现次数(使用upper_bound和lower_bound),累加得到总方案数。关键点包括:1) 必须使用long long存储结果防止溢出;2) 排序后才能使用二分查找;3) 该方法自动处理重复元素。示例代码展示了具体实现,适用于N≤2×10⁵的大规模数据。

2026-04-27 17:52:23 467

原创 P2249 【深基13.例1】查找

这篇文章讲解了一个二分查找问题,要求在一个有序数组中查找元素第一次出现的位置。文章分析了题目要求、核心算法思路和代码实现,重点说明了如何通过二分查找的变种来高效解决"首次出现位置"问题。作者详细解释了算法的时间复杂度(O(mlogn))和边界处理,并对比了暴力解法与二分查找的效率差异,强调在数据量大的情况下必须使用二分查找。文章还指出了代码优化建议,如IO加速等,适合参加算法竞赛的读者学习参考。

2026-04-27 17:30:03 391

原创 P2722 [USACO3.1] 总分 Score Inflation

本文讨论了一个完全背包问题的动态规划解法。题目要求在给定时间限制m内,从n类无限可选的题目中选择若干道,每类题目耗时t_i、得分p_i,目标是最大化总得分。解题思路采用一维动态规划数组dp,其中dp[j]表示恰好使用j时间能获得的最大分数。通过正序遍历时间(从t到m),允许重复选择同一类题目。算法时间复杂度为O(n×m),空间复杂度为O(m)。关键点在于理解完全背包的正序更新机制,这与0-1背包的逆序更新形成对比。最后直接输出dp[m]即为不超过时间m的最大得分。

2026-04-25 17:25:54 590

原创 P1832 A+B Problem(再升级)

这是一个关于素数分解的动态规划问题。程序使用完全背包的方法计算给定整数n可以被表示为素数之和的方式数量。首先定义了一个判断素数的函数f(x),然后初始化动态规划数组dp,其中dp[0]=1作为起点。对于每个素数i,从i到n进行遍历,更新dp[j]的值为dp[j]加上dp[j-i](表示使用素数i来组成数字j的不同方式)。最终输出dp[n]即为将n表示为素数之和的所有可能方式数。

2026-04-25 17:15:55 758

原创 P2871 [USACO07DEC] Charm Bracelet S

本文介绍了一个经典的0-1背包问题解法。给定N件物品(重量w[i],价值d[i])和容量M的背包,要求在不超过背包容量的情况下,选择物品使总价值最大。采用动态规划方法,使用一维数组dp[j]表示容量j时的最大价值,通过双重循环(外层遍历物品,内层倒序遍历容量)进行状态转移。关键点在于倒序更新以避免重复选择同一物品。算法时间复杂度为O(N×M),空间复杂度O(M)。最终输出dp[m]即为最优解。

2026-04-25 17:05:47 398

原创 P2925 [USACO08DEC] Hay For Sale S

本文介绍了一个基于动态规划的0-1背包问题解决方案,用于计算在给定容量限制下能装载的最大稻草体积。程序使用布尔型数组记录可达状态,通过倒序遍历确保每捆稻草只使用一次。核心算法包括:初始化dp[0]为真,对每捆稻草进行逆向状态转移,最后从最大容量开始寻找第一个可达状态作为最优解。该方法的时间复杂度为O(H×C),空间复杂度为O(C),能够有效解决题目要求的最优化装载问题。

2026-04-25 16:56:24 507

原创 P2639 [USACO09OCT] Bessie‘s Weight Problem G

这篇文章介绍了一个经典的0-1背包问题解决方案,用于帮助Bessie在不超过每日干草摄入限制H的前提下,选择若干捆干草使得总重量最大化。文章详细解释了问题核心、输入样例解析,并提供了使用布尔型动态规划数组的C++实现代码。关键点包括:使用一维DP数组记录可达重量,倒序遍历防止重复计算,以及从H向下查找第一个可达重量作为最优解。该算法时间复杂度为O(N*H),适用于题目给定的约束条件(N≤500,H≤45000)。

2026-04-24 23:41:57 381

原创 P1877 [HAOI2012] 音量调节

题目描述了一位吉他手在演出时需要根据歌曲列表调整音量,每次可选择调高或调低指定幅度,要求最终音量最大且始终在0到maxLevel之间。解题思路采用动态规划方法,定义dp[i][v]表示第i首歌前能否达到音量v。初始状态为初始音量,每次根据前一首歌的音量进行±c_i的转移,并检查新音量是否合法。最终从高到低扫描最后一首歌的可能音量,输出最大值或-1(无解)。代码通过二维布尔数组实现状态转移,时间复杂度O(n*maxLevel)。

2026-04-24 23:27:15 508

原创 P2430 严酷的训练

这篇文章介绍了一个背包问题的变体解法。题目描述两位解题者(WKY和老王)的水平比值与解题时间成反比,需要计算WKY在规定时间内能获得的最大奖励值。解题关键在于将问题转化为标准的0-1背包问题:将每道题目视为物品,其"重量"为该题所属知识点的解题时间,"价值"为题目奖励值,背包容量为规定时间上限。通过动态规划方法,倒序更新状态数组dp[j],其中dp[j]表示在时间j内能获得的最大奖励值。最终输出在规定时间上限下的最大奖励值。算法时间复杂度为O(m*num),其中m是题

2026-04-24 23:14:58 666

原创 P1926 小书童——刷题大军

本文介绍了一个动态规划与贪心算法结合的解题方法。题目要求学生在保证作业及格的前提下,用剩余时间尽可能多地刷题。解题分为两个阶段:首先使用0-1背包算法求出获得及格分所需的最少时间(其中分数为背包容量,时间为价值),然后在剩余时间内通过贪心算法选择耗时最短的题目来最大化刷题数量。代码实现了这一思路,包括输入处理、作业背包计算和题目贪心选择等步骤。通过样例验证了算法的正确性,并讨论了关键细节处理。该方法有效解决了时间分配和任务优化问题。

2026-04-18 15:49:32 394

原创 P2347 [NOIP 1996 提高组] 砝码称重

本文介绍了一个多重背包问题的解决方案,用于计算使用不同重量的砝码(1g、2g、3g、5g、10g、20g)各若干枚时,能表示的不同正整数重量的种类数。通过将多重背包问题转化为01背包问题,使用动态规划方法求解。具体实现中,使用布尔数组dp记录可达的重量状态,并通过三层循环遍历所有可能的砝码组合。最终统计dp数组中为true的元素个数,即为可表示的不同重量数。该方法适用于总重量不超过1000的情况,时间复杂度为O(n^2),能够有效解决问题。

2026-04-18 15:42:19 542

原创 P1510 精卫填海

本文探讨了精卫填海问题的动态规划解法。题目要求选择若干木石,使其总体积≥v且总消耗体力≤c。通过转化为0-1背包问题,定义dp[j]为恰好获得体积j所需的最小体力。采用逆向遍历更新状态,最终在所有j≥v中寻找最小体力消耗。若最小值≤c则输出剩余体力,否则输出"Impossible"。代码分析展示了合理设置数组大小和初始值的技巧,并通过样例验证了算法的正确性。该解法有效解决了"最小代价达到至少目标容量"的变种背包问题。

2026-04-18 10:44:21 336

原创 P1910 L 国的战斗之间谍

这篇文章介绍了一个二维0-1背包问题的解法。题目需要从N个间谍候选人中选择若干人,在满足总伪装差不超过M和总工资不超过X的条件下,最大化能获取的资料量。每个间谍有三个属性:资料量A、伪装差B和工资C。 解法采用动态规划,定义dp[j][k]表示在总伪装差不超过j且总工资不超过k时的最大资料量。通过三层循环(遍历每个间谍,倒序遍历伪装差和工资限制)进行状态转移,更新dp数组。最终答案dp[m][x]即为在给定限制下的最优解。 该解法正确处理了双重约束条件下的0-1背包问题,通过倒序遍历避免重复选择,时间复杂度

2026-04-11 12:43:46 504

原创 P1855 榨取kkksc03

本文介绍了一个二维0-1背包问题的解法。题目要求在有限的金钱(M)和时间(T)条件下,从n个愿望中选择尽可能多的愿望,每个愿望需要消耗特定金钱和时间。采用动态规划方法,定义dp[j][k]表示不超过j元和k分钟时能完成的最大愿望数。通过三重循环(倒序枚举愿望、金钱和时间)进行状态转移,最终输出dp[M][T]即为最优解。算法时间复杂度为O(nMT),适用于资源限制条件下的最优化问题。

2026-04-11 12:35:00 342

原创 P2663 越越的组队

本文介绍了一个解决班级学生分组问题的动态规划算法。题目要求从n个学生(n为偶数)中选出恰好n/2人,使其成绩之和不超过总分一半的前提下最大化。算法采用二维0-1背包思路,定义dp[j][s]表示能否选出j人达到总分s。通过三重循环(学生、人数倒序、总分倒序)进行状态转移,最后从总分上限向下查找第一个可行解。该算法有效解决了带数量限制的背包问题,时间复杂度为O(n²·sum),适用于n≤100的规模。

2026-04-10 18:02:04 496

原创 P1060 [NOIP 2006 普及组] 开心的金明

本文介绍了一个基于0-1背包问题的动态规划解法,用于在预算限制下最大化物品价值。题目要求在不超过N元的前提下,选择若干物品,使价格与重要度的乘积总和最大。解法采用一维数组优化空间,通过倒序更新确保物品只选一次。核心思路是定义dp[j]表示花费不超过j时的最大价值,对每件物品从n到其价格倒序更新dp数组。最终答案存储在dp[n]中,表示预算内能获得的最大价值。代码简洁高效,适用于物品数量较少的情况。

2026-04-10 17:54:28 385

原创 P11246 [GESP202409 六级] 小杨和整数拆分

本文介绍了一个使用动态规划解决完全平方数最小数量问题的算法。给定正整数n,算法通过动态规划计算将其表示为完全平方数之和所需的最少个数。初始化时假设全用1组成,然后逐步优化:对于每个数字i,枚举所有可能的平方数j²≤i,通过状态转移方程dp[i]=min(dp[i],dp[i-j²]+1)寻找最优解。算法时间复杂度为O(n√n),适用于n≤1e5的情况。代码简洁高效,通过预处理和状态转移确保了结果的正确性。

2026-04-05 17:58:55 367

原创 P10376 [GESP202403 六级] 游戏

本文摘要: 该问题要求计算从初始值n出发,通过反复减去a或b,直到n≤c时的不同操作序列数量。解题采用动态规划方法,通过偏移量技巧处理负数下标,实现反向状态转移。核心思路是从n开始倒序处理,将路径数传播到n-a和n-b的位置,最终累加所有终止状态(n≤c)的路径数。代码使用dp[N+x]表示状态x,其中N=2e5+5作为偏移量,确保数组访问安全。时间复杂度O(n),空间复杂度O(n),适用于n≤2e5的情况。

2026-04-05 17:49:51 489

原创 P10108 [GESP202312 六级] 闯关游戏

摘要 本文解决了一个闯关游戏的最优路径问题,玩家需要通过选择不同跳跃步数的通道来最大化通关得分。采用动态规划方法,定义dp[i]表示到达第i关时能获得的最大总分。算法首先初始化所有位置为不可达,然后处理起点和初始跳跃情况。通过双重循环进行状态转移,考虑所有可能的跳跃路径。最终在可能通关的位置范围内寻找最大得分。该方案有效处理了游戏规则中的得分机制和通关条件,确保找到最优解。时间复杂度为O((N+M)*M),适用于题目给定的数据范围。

2026-04-05 17:41:33 597

原创 B3873 [GESP202309 六级] 小杨买饮料

这是一个解决0-1背包变种问题的C++程序。题目要求选择若干种饮料(每种最多一瓶),在总容量不低于L的前提下,使总费用最小。程序采用动态规划方法,其中dp[j]表示恰好获得j毫升容量的最小费用。关键优化是将容量上界设为L+最大单瓶容量,避免不必要的计算。算法通过倒序更新背包状态,最后在[L, MAXL]范围内寻找最小费用。若无解则输出"nosolution"。该方案有效处理了"至少满足容量L"的约束条件,同时优化了计算范围。

2026-04-02 23:35:41 546

原创 P1569 [USACO ?] Generic Cow Protests【来源请求】

本文介绍了一个动态规划算法,用于解决将连续排列的奶牛分成最多合法小组的问题。每个小组的理智度总和必须不小于零。算法使用前缀和优化来计算子段和,并通过动态规划状态dp[i]记录前i头奶牛的最大分组数。核心思路是枚举最后一段的起点j,当子段[j,i]和≥0且前j-1头牛可分组时,更新dp[i]为dp[j-1]+1。初始状态dp[0]=0,其他初始为-1表示不可达。最终若dp[n]为-1则输出"Impossible",否则输出最大分组数。算法时间复杂度O(n²),适用于n≤1000的情况。

2026-04-02 23:27:12 400

原创 P7158 「dWoi R1」Password of Shady

本文介绍了一个动态规划算法,用于计算满足特定条件的n位数的个数。题目要求构造一个n位数,其中数字k出现的次数为偶数次,且无前导零。算法通过预处理所有可能的n值,使用状态压缩(奇偶性)进行高效计算。对于n=1的情况,数字0被视为合法且包含在内;对于n≥2的情况,则不考虑0。通过状态转移方程dp[i][0] = (dp[i-1][0]*9 + dp[i-1][1]) % MOD和dp[i][1] = (dp[i-1][1]*9 + dp[i-1][0]) % MOD,算法在O(n)时间内预处理所有结果,随后可以

2026-03-28 13:47:38 482

原创 P3009 [USACO11JAN] Profits S

这篇文章介绍了一个解决最大子段和问题的动态规划算法(Kadane算法)。给定一个包含每天利润的整数序列(可正可负),要求找到连续子数组的最大和。算法通过定义dp[i]为以第i天结尾的最大子段和,状态转移方程为dp[i] = max(P[i], dp[i-1]+P[i])。最终结果是所有dp[i]中的最大值。文章详细解释了算法思路、代码实现和样例验证,并指出可以优化空间复杂度。该算法时间复杂度为O(n),适用于N≤1e5的情况。

2026-03-28 13:28:36 771

原创 P2800 又上锁妖塔

本文介绍了一个动态规划解决锁妖塔问题的算法。问题描述:小A需要爬上n层塔,可以选择花费时间爬楼或不花时间跳跃,但跳跃后必须至少爬一层才能再次跳跃。算法使用动态规划,定义dp[i][0]表示跳到第i层的最小时间,dp[i][1]表示爬到第i层的最小时间。状态转移时,跳跃只能从爬楼状态转移,而爬楼可以从任意状态转移。初始化时设置地面为爬楼状态(时间0),跳跃到第1层为0时间。最终答案为到达顶层时的两种状态中的最小值。该算法时间复杂度为O(n),能高效处理大规模输入。

2026-03-26 19:45:17 622

原创 P1796 汤姆斯的天堂梦

摘要:本文解决了一个分层星球间最小费用路径问题。通过动态规划方法,使用滚动数组优化空间复杂度,计算从等级0到等级N星球的最小费用路径。算法核心是用last数组存储上一层费用,dp数组计算当前层费用,每层更新后传递结果。时间复杂度为O(总航线数),适用于最多100层的场景。样例验证表明算法正确计算出最优解,如输入样例得到-1的最小费用。该方案高效解决了DAG结构的分层图最短路径问题。

2026-03-26 19:29:14 509

原创 P1968 [CHCI 2001 Regional Competition Seniors] 美元汇率

摘要:该代码使用动态规划解决货币兑换优化问题。初始有100美元,根据N天的汇率(100美元↔A_i马克),每天可选择兑换或保持当前货币。状态dp[i][0/1]分别表示第i天持有美元/马克的最大值。转移方程为:美元状态取保持或马克兑换美元的最大值,马克状态同理。最终输出dp[N][0],即第N天持有美元的最大金额,保留两位小数。该算法通过每天最优决策保证最终收益最大化。

2026-03-25 23:47:28 527

原创 P8395 [CCC 2022 S1] Good Fours and Good Fives

该代码使用动态规划解决用4和5拼凑正整数n的方案数问题。定义dp数组记录拼出每个数的方案数,初始dp[0]=1。首先处理数字4,然后处理数字5,通过完全背包的思路顺序更新dp数组。时间复杂度O(n),适用于n≤1e6的情况。最终输出dp[n]即为用4和5组成n的方案总数。

2026-03-25 23:39:23 381

原创 P1115 最大子段和

本文介绍了求解最大子段和问题的Kadane算法。该算法通过动态规划实现,定义dp[i]为以第i个元素结尾的最大连续子段和。状态转移方程为dp[i] = max(a[i], dp[i-1]+a[i]),最终结果为所有dp[i]中的最大值。文章详细分析了算法原理,并给出C++代码实现,展示了如何复用输入数组来优化空间。通过样例验证了算法正确性,包括处理全负数的情况。该算法时间复杂度为O(n),空间复杂度可优化至O(1)。关键点在于理解状态定义和转移方程的设计思想。

2026-03-24 17:37:15 339

原创 P2008 大朋友的数字

该代码解决了一个最长不下降子序列(LNDS)的变种问题,要求对每个位置i,计算以a[i]结尾的最长不下降子序列的元素和,当存在多个等长子序列时选择字典序最小的那个。算法采用动态规划,使用dp数组记录长度,ans数组记录和值。通过从左到右遍历,并在严格更长时才更新状态,自动保证了字典序最小。时间复杂度为O(n²),适用于n≤10⁴的情况。代码正确处理了字典序要求,无需额外处理等长情况。

2026-03-24 17:20:27 467

原创 P1203 [IOI 1993 / USACO1.1] 坏掉的项链 Broken Necklace

题目摘要:给定一个由红、蓝、白色珠子组成的环形项链,白色可视为任意颜色。通过在任意位置断开项链,求从左端向右和从右端向左收集同色珠子的最大总数。 解题思路: 破环成链:将原字符串s复制为s+s,便于处理环形结构 预处理四个数组: leftR/B:从左到右以红/蓝结尾的最长连续段 rightR/B:从右到左以红/蓝开头的最长连续段 枚举所有可能的断开位置,计算左右两段的最大值之和 最终结果不超过珠子总数n 时间复杂度:O(n),空间复杂度:O(n)

2026-03-21 13:07:15 383

原创 P2362 围栏木桩

该程序解决了一个动态规划问题:给定n个木桩的高度序列,求最长非降子序列(LNDS)的长度及其对应方案数。采用双重循环的DP方法,其中dp[i]记录以第i个元素结尾的LNDS长度,cnt[i]记录对应方案数。通过比较和更新,最终输出最长长度和总方案数。时间复杂度为O(n²),适用于小规模数据(n≤20)。核心在于状态转移时的长度比较和方案数累加逻辑。

2026-03-21 12:34:46 317

原创 P1359 租用游艇

本文解决长江游艇租赁问题,要求从站点1到站点n的最小租金。通过动态规划方法,定义dp[i]为到达站点i的最小费用。初始时dp[1]=0,其他设为极大值。状态转移方程为dp[j] = min(dp[j], dp[i] + a[i][j]),其中a[i][j]表示从i直接到j的租金。代码采用双重循环实现该方程,外层遍历起始站点i,内层更新所有下游站点j的最优解。最终输出dp[n]即为答案。该方法时间复杂度O(n²),适用于n≤200的情况,能正确处理中间换乘的优化路径。

2026-03-11 16:59:35 346

原创 P1130 红牌

这篇文章分析了一道关于最小化完成多步骤任务的动态规划问题。题目描述M个小组完成N个步骤,每个步骤由不同小组完成会有不同耗时,且允许在相邻步骤间按环形规则切换小组。 关键点: 使用dp[i][j]表示第j步由小组i完成的最小总天数 状态转移考虑两种来源:继续使用当前小组或切换到前一个小组(环形处理) 最终答案为完成所有步骤后各小组的最小值 算法通过双层循环实现,外层遍历步骤,内层处理各小组状态转移,时间复杂度O(M×N)。文章通过样例验证了算法的正确性,并强调了环形处理和边界条件的注意事项。

2026-03-11 16:47:03 436

原创 P10250 [GESP样题 六级] 下楼梯

摘要:本文介绍了一个动态规划解决爬楼梯问题的变种,每次可走1、2或3个台阶。通过定义dp[i]为到达第i级台阶的方案数,推导出状态转移方程dp[i]=dp[i-1]+dp[i-2]+dp[i-3],并给出初始条件dp[1]=1、dp[2]=2、dp[3]=4。文章详细分析了代码实现,强调使用long long防止溢出,并通过样例验证正确性。最后总结了处理DP边界条件的核心原则和实用技巧,包括手动枚举验证、数组下标对齐等。时间复杂度为O(n),空间复杂度O(n)。

2026-02-12 18:04:12 936

原创 P8707 [蓝桥杯 2020 省 AB1] 走方格

摘要: 题目要求在n×m网格中从(1,1)走到(n,m),只能向右或向下移动,且禁止进入行列均为偶数的格子。采用动态规划解决:定义dp[i][j]为到达(i,j)的路径数,边界条件(第一行/列)初始化为1,核心转移方程为dp[i][j] = dp[i-1][j] + dp[i][j-1],但若行列均为偶数则跳过(路径数为0)。最终输出dp[n][m],时间复杂度O(nm)。例如3×4网格的合法路径数为2。

2026-02-12 17:33:51 622

原创 P1226 【模板】快速幂

本文介绍了快速幂算法的实现方法,用于高效计算大整数a^b mod p的值。通过将指数b分解为二进制形式,利用平方操作将时间复杂度优化至O(logb)。文章详细解析了快速幂函数的实现逻辑,包括变量初始化、循环处理、取模运算等关键步骤,并给出了样例验证。同时强调了防止数据溢出的注意事项,如及时取模和使用合适的数据类型。该算法有效解决了直接计算大指数幂时的溢出和效率问题,是处理模幂运算的经典模板方法。

2026-02-10 15:03:50 1155

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除