自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 字符串Hash

(基于进制的)字符串Hash本质是用一个数字代表一个字符串,从而降低字符串处理的复杂度。这是一个很大的数字,采用unsigned long long类型,可以自然溢出,也简化了取模的过程。还需要一个进制数base,用于数字的进制。(base选取质数如131,1331......)Hash数组h[ i ]表示字符串1~i的hash值,采用类似前缀和的形式求出任意子集的Hash值对于学习过前缀和的朋友来说比较好理解,字符串Hash的作用基本相同。这里建议各位先去看一下本人另一篇关于前缀和的blog。

2025-02-24 22:55:53 365

原创 KMP算法(简单理解)

由于KMP对于初接触的人并不友好,此文暂时只介绍模板,对于此算法的理解需个人另外思考KMP算法的精髓就是运用next数组对时间复杂度进行优化,将原来字符串匹配所需的O(n^2),优化成立仅仅O(n)的复杂度!!!字符串匹配的目的可以理解为得出模式串P在字符串S中出现的次数。KMP 算法的关键在于利用已经匹配的部分信息,避免在遇到不匹配字符时将主字符串的指针回溯。具体来说,KMP 算法通过预处理模式字符串,构建一个next数组,该数组记录了模式字符串中每个位置之前的子串的最长公共前后缀长度。

2025-02-24 21:22:57 206

原创 ⭐⭐⭐模拟退火(SA)⭐⭐⭐

模拟退火算法(SA)是一种基于概率的通用优化算法,用来在一个大的搜寻空间内寻找问题的最优解。 模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即即在局部最优解能概率性地跳出并最终趋于全局最优。 在物理中我们知道,温度越高,物体内部分子热运动越剧烈;温度越低,分子热运动越平静。 温度在模拟退火算法中的作用体现可以类比物理中分子的热运动:温度越高,分子活动越剧烈,对当前状态产生的偏移越大

2025-02-15 17:12:20 1866

原创 折半搜索&回溯法

折半枚举

2025-02-15 10:45:08 1792

原创 DFS的剪枝写法

数字王国开学了,它们也和我们人类一样有开学前的军训,现在一共有n名学生,每个学生有自己的一个名字ai(数字王国里的名字就是一个正整数,注意学生们可能出现重名的情况),此时叛逆教官来看了之后感觉十分分别扭,决定将学生重新分队。排队规则为:将学生分成若干队,每队里面至少一个学生,且每人里面学生的名字不能出现倍数关系(注意名字相同也算是倍数关系)。例:有4名学生(2,3,4,4),最少可以分成(2,3)、(4)、(4)、(4)共3队。第二行包含n个由空格隔开的整数,第i个整数表示第 i 个学生的名字ai。

2025-02-14 13:06:25 162

原创 DFS(深度优先搜索)&回溯法

常见的是通过某种关系构造出搜索树,搜索树分为排列型搜索树(总节点个数一般为n!跑dfs求最大的环,可以用时间戳(dfn),将走过的地方标记一个时间戳(即第几步走到的)。后续搜索中,每次开始时更新最小时间戳(mindfn),如果走到已经走过的点就必须停下,然后根据时间戳的合法性来更新最大值。DFS从起始节点开始,沿着一条路径尽可能深入地搜索,直到无法继续,然后回溯到前一个节点,继续探索其他路径,直到遍历完整个图或树。在一个游戏中,需要小朋友坐一个圈,每个小朋友都有自己最崇拜的小朋友在他的右手边。

2025-02-14 10:28:11 455

原创 逆序对的两种求法

求得逆序对的方法有归并排序法和树状数组法。前者的时间复杂度为nlogn,后者为nXm(m为值域)。

2025-02-13 15:23:51 229

原创 结构体排序

在比较两个数的大小时,如果它们的封闭图形个数不同,那么封闭图形个数较多的数更大。例如,数字 14 和数字 41,它们的封闭图形的个数都是 1,但 14<41,所以数字 14 小于数字 41。封闭图形是指数字中完全封闭的空间,例如数字 1、2、3、5、7 都没有形成封闭图形,而数字 0、4、6、9 分别形成了 1 个封闭图形,数字 8 则形成了 2 个封闭图形。对于给定的数字序列 [18,29,6],数字 18 的封闭图形个数为 2,数字 29 的封闭图形个数为 1,数字 6 的封闭图形个数为 1。

2025-02-13 14:15:18 220

原创 sort函数与cmp函数和重载运算符

他有一个特别的定义:“独特瓷器”,即对于一个瓷器 AA,如果不存在另一个瓷器 BB ,其直径和高度都严格大于瓷器 AA 的直径和高度,则称瓷器 AA 为“独特瓷器”。他有一个习惯,就是在每一个瓷器底部都标注上瓷器的直径 dd 和高度 hh。阿坤老师有 N 个瓷器,每个瓷器都有一个直径和高度。接下来的 NN 行,每行包含两个整数,分别表示瓷器的直径 d和高度 h(1≤d,h≤106)。

2025-02-13 11:30:48 1314

原创 1.20(排序函数的快写)

对于数组a[,具体的来说,每次确定操作(假设当前要确定的是i位置)就是从左往右扫描,快速排序是一种基于分治法的排序方法,原理是将一个数组分分成两个子数组,其中一个子数。类推(类似地,如果你想先把最小的放到左边也是可以的),时间复杂度为0(n^2)无需再排序了,直接返回),得到两个有序数组,然后进行0(n)的名合并,最终合并成有序的原数组。第二次确定操作是将a[1]~a[n-1]中最大的放到a[n-1]。的合适位置中,使得已排序序列逐渐扩大,从而逐步构建有月序列,最终得到完全有序的序。

2025-01-20 11:16:16 290

原创 1.19(差分用于计数)

小蓝最近获得了一个长度为NN的字符串SS,他对它爱不释手。小桥想让小蓝回答她在操作完成后SS是多少?小蓝陷入了困境,于是请你帮帮他!字符右移表示为按字母表进行移动,例如a右移11次变为bb右移22次变为d。特别地,z右移11次变回为a。

2025-01-19 18:40:58 257

原创 1.19(前缀和,差分与贪心)

给定一个数组AA和一些查询Li,RiLi​,Ri​,求数组中第LiLi​至第RiRi​个元素之和。小蓝觉得这个问题很无聊,于是他想重新排列一下数组,使得最终每个查询结果的和尽可能地大。小蓝想知道相比原数组,所有查询结果的总和最多可以增加多少?

2025-01-19 15:10:17 113

原创 1.19(利用前缀和对时间复杂度优化)

给定nn个整数a1,a2,⋅⋅⋅,ana1​,a2​,⋅⋅⋅,an​,求它们两两相乘再相加的和,即:S=a1⋅a2+a1⋅a3+⋯+a1⋅an+a2⋅a3+⋯+an−2⋅an−1+an−2⋅an+an−1⋅anS=a1​⋅a2​+a1​⋅a3​+⋯+a1​⋅an​+a2​⋅a3​+⋯+an−2​⋅an−1​+an−2​⋅an​+an−1​⋅an​输入的第一行包含一个整数nn。第二行包含nn个整数a1,a2,⋯,ana1​,a2​,⋯,an​。输出一个整数SS,表示所求的和。请使用合适的数据

2025-01-19 15:06:51 213

原创 1.17(按位移,递归)

在一个神秘的世界中,存在一个传说中的神秘花园,被认为拥有无限的知识。但要进入这个花园,你必须解决花园入口处的一道神秘数学难题。这个难题与一个特殊的数学函数相关,称为“神秘函数”。神秘函数 S(x)S(x) 的定义如下:当 xx 为 00 时,S(0)=1S(0)=1。当 xx 为偶数时,S(x)=S(x/2)S(x)=S(x/2)。当 xx 为奇数时,S(x)=S(x−1)+1S(x)=S(x−1)+1。你需要编写一个程序,计算给定正整数 xx,神秘函数 S(x)S(x) 的值。

2025-01-17 16:59:19 142

原创 1.17(贪心,map)

在生物学中,DNA 序列的相似性常被用来研究物种间的亲缘关系。现在我们有两条 DNA 序列,每条序列由 A、C、G、T 四种字符组成,长度相同。但是现在我们记录的 DNA 序列存在错误,为了严格满足 DNA 序列的碱基互补配对即 A - T 和 C - G,我们需要依据第一条 DNA 序列对第二条 DNA 序列进行以下操作:选择第二条 DNA 序列的任意两个位置,交换他们的字符。选择第二条 DNA 序列任意一个位置,将其字符替换为 A、C、G、T 中的任何一个。需要注意的是:每个位置上的碱基!

2025-01-17 15:11:50 266

原创 牌组的题目

阿伟是《欢乐斗地主》游戏的爱好者,在跟彬彬一起玩游戏的过程中,他把刚充值的648欢乐豆输了个精光。对于100%的测试数据,我们保证牌的数量小于$$10^6$$,输入数据的总字符数不超过$$10^7$$。对于70%的测试数据,我们保证牌的数量小于$$10^4$$,输入数据的总字符数不超过$$10^5$$。如果存在多个顺子,程序应该优先选择最长的顺子,在同样长度的顺子中,选择最大的顺子。2永远都不是顺子的一部分,因此如果最大的那张牌是2,则应该输出第二大的那张牌。如果阿伟输入斗地主中不存在的牌,输出。

2024-10-06 10:38:10 492

空空如也

空空如也

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

TA关注的人

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