- 博客(9)
- 收藏
- 关注
原创 算法系列——最大子段和
/区间[1,i]内的最大子段和 ret=f[i]-premin。因此,我们可以创建 数组的「前缀和」数组,然后在遍历前缀和数组的过程中,⼀边「更新前驱最。关于这道题的解法有很多种,我们先介绍利⽤「前缀和」的解法。如果想要「最⼤⼦段和」,也就是「最⼤区间和」,那么⽤。⼩值」,⼀边[更新当前位置为结尾的最⼤⼦段和]在求「区间和」时,相当于是⽤。减掉⼀个「前驱最⼩值」即可。
2025-02-17 23:02:13
215
原创 算法系列——一维前缀和
2.使用前缀和数组时,下标最好从1开始计数(从0开始虽然可以,但需要额外判断越界情况)f[i]表示:区间[1,i]中,所有元素的和。] ≤ 1e9,故前缀和数组需定义为long long。快速求出数组中某一段的区间和(时间复杂度O(1)),从而优化时间复杂度,是经典的。:先预处理出来一个前缀和数组。
2025-02-17 22:17:29
351
原创 算法系列——二进制枚举(附例题一)
1.枚举 0~(1>>n)-1 之间所有的数,每⼀个数的⼆进制中 的位置可以表⽰数组中对应位置选上该元。用二进制形式中的0/1表示两种状态,从而实现枚举各种情低洼低洼的文风分为氛围分为烦烦烦我。2.关于0/1表示状态的方法,会在动态规划中的状态压缩dp中继续使用。2.根据枚举的每⼀个状态,选出原数组中对应的元素,然后存在结果数组中。那么0~(1>>n)-1 就可以枚举出原数组中所有的⼦集。2.(st>>i)&1的意义:判断st二进制形式第i位是否为1。1.理解1<<n的意义:相当于2**n。
2025-02-17 14:27:42
330
原创 算法系列——枚举(例题三)
2.确认某种方案合理时,务必保证a[n+1]==0,表示所有雷都已在a[1]~a[n]中(即合法)枚举第一个格子,有没有地雷。1.数组从下标为1处开始使用,非常便利,同时防止越界访问。
2025-02-17 12:56:37
441
原创 算法系列——枚举(例题二)
/2月直接定义为29天,因为92200229本身也是合法日期,若定义为28天,就无法遍历到 92200229 可能会使结果少一。策略一(一般算法):枚举x~y之间所有的数字,然后判断是否回文,如果回文,那就拆成年月日,判断是否是合法日期。策略三(最优算法):枚举所有的月和日的组合,然后根据回文形式找出相应年份,判断是否合法。策略二(较优算法):仅需枚举年份,然后根据回文形式找到相应月日,最后判断是否合法即可。注:三种算法在本题中均可通过,大家可自行尝试。
2025-02-16 23:08:09
164
原创 算法系列——枚举(例题一)
2.一般直接枚举是会超时的。先要根据数据范围判断暴力枚举是否会超时,若会超时,考虑用其他算法来优化(如二分,双指针,前缀和,差分)1.定义:把所有可能情况列出来,然后找出符合题目条件的那个。故枚举算法是一种纯暴力算法。策略二:从后往前枚举地毯,当地毯覆盖所求点时,停止遍历。3.枚举方式(普通枚举,二进制枚举,递归枚举等)枚举所有的地毯,找出覆盖最后点的地毯。2.枚举顺序(正序还是逆序)1.枚举对象(枚举什么)策略一:从前往后枚举。
2025-02-16 16:49:50
334
原创 算法系列——高精度除法
/存储每次除完之后的余数 t为long long 类型,因为余数可能是1e9,再*10超过int类型。声明:此篇高精度除法探究高精度/低精度,而非高精度/高精度。//高精度除法模板——c=a/b(高精度/低精度)1.用字符串读入被除数,拆分每一位,逆序放在数组中。核心代码:t=t*10+a[i]//计算当前的被除数。//1.将被除数逆序存入数组。//2.模拟列竖式除法的过程。2.利用数组,模拟列竖式除法的过程。模拟列竖式计算的过程。
2025-02-16 12:00:32
273
原创 算法系列——高精度乘法
优化:无进位相乘,然后想加,最后处理进位(避免传统乘法中每位数都要进位,以免频繁进位)模拟一下可发现规律:c[i+j]=a[i]*b[j]2.利用数组,模拟列竖式乘法的过程(回想竖式乘法过程)1.先用字符串读入,然后拆分每一位,逆序放在数组中。//1.拆分每一位,逆序放入数组中。//1.无进位相乘,然后相加。解法:模拟列竖式的过程。
2025-02-15 21:48:02
213
原创 算法系列——高精度减法
eg:数字:101>99 but字符串:"101"<"99"(字符串比较默认从最高位开始比较)2.若对应位相减结果小于0,向前借一位,然后这一位加10。解决方式:字符串比较之前,先比较字符串的长度(即比较相应数字的位数)1.先用字符串读入,然后拆分每一位,逆序放入数组中。if(c[i]<0)//处理借位。//1.拆分每一位,然后逆序放入数组中。//处理前导零,eh:001;//2.按照 字典序 比较。先比较大小,再用较大的数减去较小的数。2.利用数组,模拟列竖式减法的过程。//2.模拟减法的过程。
2025-02-15 19:55:07
387
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅