
基础算法
文章平均质量分 50
基础算法
稚皓君
欢迎你的光临,随便看看就好 ^_^
展开
-
AcWing 1824. 钻石收藏家 (双指针)
AcWing 1824. 钻石收藏家题目链接题目描述奶牛贝茜非常喜欢闪闪发光的东西,她会在业余时间开采钻石。她收藏了 N 颗大小不等的钻石,她想将其中的一些摆放在牛棚的展示柜当中。为了使展示柜中的钻石尺寸大小相似,她不会将两颗尺寸大小相差超过 K 的钻石同时放在柜子中(刚好相差 K,则没有问题)。给定 K,请帮助贝茜计算在展示柜中最多可以摆放多少颗钻石。输入格式第一行包含两个整数 N,K。接下来 N 行,每行包含一个整数,表示一颗钻石的尺寸。输出格式输出贝茜可以在展示柜中展示的钻石最大原创 2022-04-12 20:51:07 · 464 阅读 · 4 评论 -
排序算法之归并排序
排序算法:1.归并排序排序算法之归并排序算法思维归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。该算法采用经典的分治策略(分治法将问题分成一些小的问题然后递归求解,而治的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法:1.自上而下的递归(所有递归的方法都可以用迭代重写,所以就有了第 2 种方法);2.自下而上的迭代;算法步骤1.申请空间,使其大小为两个已原创 2021-07-27 21:07:56 · 501 阅读 · 0 评论 -
动态规划之悬线法模板(最大子矩阵问题)
悬线法的用途针对求给定矩阵中满足某条件的极大矩阵,比如“面积最大的长方形、正方形”“周长最长的矩形等等”。可以满足在时间复杂度为O(M*N)的要求,比一般的枚举高效的多,也易于理解。悬线法思路一般地,我们有一张n∗m的图,里面有一些障碍,我们想要求出一个最大的子矩形,使得它里面没有任何障碍(或者说,使它满足某个条件)。我们考虑从每个点向上作一条射线,这条线如果遇到一个障碍或者是矩形的上边界就停下。这条线,就叫做悬线。我们把这条线尽可能地往左右移动(尽可能指的是不遇到障碍),就可以围成一个极大子原创 2021-07-21 10:48:42 · 488 阅读 · 5 评论 -
序列自动机【模板】
序列自动机算法分析序列自动机实质还是用空间换时间,它有一个数组 ne[i][j]表示原串s的第i位后面那26个字符j出现的最早的 位置。相当于建一棵树,根节点是一个空节点,它有26个孩子,表示每一个字母最早出现的位置举个例子:s = “abcca” (默认数组下标为1-5) (a–z==0–25) ne[0][0] =1,即字符串中出现的第一个字符’a’的位置为1 ne[1][1] = 2,即字符串距离下标1之后的字符’b’出现的第一个位置为2以此类推我们可以得到 ne[1][0] =原创 2021-05-07 21:43:25 · 254 阅读 · 1 评论 -
dfs与bfs 基本框架
dfs与bfs 基本框架dfsvoid dfs(int x,int y){ if(达到出口||无法继续) { 相应操作; return; } if(对应x方向的下一步可以继续) { 添加标记;//给该位置记上标记,如果后续递归调用碰到了这个点,则该方向不能继续下一步 dfs(x+1,y);//调用递归原创 2021-04-13 15:42:56 · 234 阅读 · 2 评论 -
尺取法--例题模板详解
尺取法:一种神奇的技巧。在Codeforces中显示它的算法名称叫做"two pointers", 直译成中文的话叫双指针法。尺取法顾名思义,像尺子一样取一段,尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后根据实际情况不断地推进区间左右端点以得出答案。尺取法比直接暴力枚举区间效率高很多,尤其是数据量大的时候,所以说尺取法是一种高效的枚举区间的方法,是一种技巧,一般用于求取有一定限制的区间个数或最短的区间等等。当然任何技巧都存在其不足的地方,有些情况下尺取法不可行,无法得出正确答案原创 2021-04-01 18:21:04 · 520 阅读 · 0 评论