自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

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