- 博客(9)
- 收藏
- 关注
原创 Problem - 2152D - Codeforces
本文研究了Codeforces 2152D博弈问题,分析甲乙双方对数列的非对称操作策略。甲希望最小化操作次数,乙则试图拖延。通过将数字分为三类(2的幂次、2的幂次*2+1、其他数),推导出最优策略:甲应优先处理第二类数。最终将问题转化为前缀和查询,给出高效解决方案。代码实现通过预处理三类数的数量及操作步数,实现区间查询的快速响应。
2025-10-13 06:34:38
583
原创 字符串KMP算法,变式运用和KMP自动机的疑难理解
本文从初学者角度讲解KMP算法,主要包含以下内容:1. 前缀函数定义及计算思路;2. KMP算法优化原理,通过回退机制将复杂度降至O(N);3. KMP算法模板实现及字符串匹配应用;4. 前缀出现次数统计方法;5. KMP自动机的预处理思路及其实现,用于提升多字符串查询效率。文章详细说明了每个概念的计算过程,并提供了完整的实现代码,适合算法初学者理解KMP算法的核心思想与应用场景。
2025-05-29 17:44:45
668
2
原创 寒假第七专题总结
Dijkstra 算法是求单源最短路径的高手,从一个点出发,每次挑离它最近的“小伙伴”,更新到其他点的距离,像地图导航找最近路线就常用它。邻接矩阵像个大表格,用数字表示顶点间有没有边或者边的权重,简单直接,但有点占地方,适合“热闹”的稠密图;邻接表呢,给每个顶点配个“小弟”链表,记录它的邻居,节省空间,更适合“人少”的稀疏图。无向图的边是双向道,两边都能走。Kruskal 算法先把所有边按长短排好队,然后一个个挑,只要不形成环,就加到“小树”里,最后得到的就是成本最小的连接方案,在网络布线里经常用到。
2025-02-19 23:56:53
1412
原创 寒假第六专题总结
动态规划是一种解决问题的算法思想,通常用于求解具有重叠子问题和最优子结构性质的问题。简单来说,就是把一个大问题拆解成若干个小问题,通过解决小问题来逐步解决大问题,同时避免重复计算。记住你已经算过的东西,避免重复劳动。是不是有点像我们平时背单词时的“艾宾浩斯记忆法”?
2025-02-16 23:54:54
1375
原创 寒假第五专题总结
它的核心思想是 “一条路走到黑”,即从起始节点开始,沿着一条路径尽可能深地搜索,直到到达叶子节点或无法继续前进,然后回溯到上一个节点,继续搜索其他路径。:DFS 的空间复杂度主要取决于递归深度或栈的大小,最坏情况下为 𝑂(ℎ)O(h),其中 ℎh 是树或图的最大深度。:BFS 的空间复杂度主要取决于队列的大小,最坏情况下为 𝑂(𝑉)O(V),其中 𝑉V 是节点的数量。,即从起始节点开始,先访问所有邻居节点,再访问邻居的邻居,直到遍历完所有节点。DFS 通常通过 递归 或 栈 来实现。
2025-02-13 23:57:06
715
原创 寒假第四专题总结
线性筛也是第一次学到,解决了我在入学考时的考题(当时以为学了函数就跟万金油一样用,结果TLE了。之前想着怎么去理解更加直观,碍于学识浅薄,就直接让a,b分别为C1gcd和C2gcd,这样化简完只需要证明对于两个互质数C1.C2,C1*x+C2*y=1.更容易让人接受。这题首先得保证给出的x可以整除y,然后只需要知道比值:y/x就可以继续想了。这个代码用于求能被p整除的不小于x的最小数,当然2*p是这题特殊情况考虑的,实际上,标准模板只有最左边那一丢丢。如何得到xy的值,这时就需要,"扩展欧几里得算法"。
2025-02-10 21:28:23
290
原创 寒假第三专题总结
本题较巧的运用了栈。我的解法是,将每次访问下一头牛时,将这头牛与栈上的牛比较身高,栈上牛H小于该牛则确定其仰望对象,剩下的栈上牛H均高于该牛。所以这时把该牛添加到栈,则栈上牛身高有序,方便进行pop。这题确实写红温了,需要ST熟练度比较高,本身没有太大思考难度,但是实现细节十分复杂,从一开始的初始化,到查询都比较难设计(应该是我的水平问题)最后听的讲评,然后模仿敲了一遍。数据量实在太小,我们可以考虑使用队列,队列的头出尾进刚好类似于一个循环。,本题就是套模板,然后关注快速读入。
2025-02-07 23:55:36
261
原创 寒假第二专题总结
这题蠢蠢的某人疯狂WA,几乎疯狂。究其原因,是手写卡牌的错误计算。大概思路是:用两个数组,逐个相加得到单张牌最多个数的最小值。然后将其作为right,二分查找可行的最小值。有序数对:本题将所有元素+C二分检验是否存在即可,复杂度nlogn。下界是所有页数之和除以抄写人数,最大元素两者的最大值(此处易漏,导致错误,但容易查出来,位于检测点4),上界是最大值*n。二分法用于查找有序区间中第一个≥或者≤某个值的元素。输的复制:容易看出二分模型。因为生病原因,本专题比较赶着做完。具体细节下面地址也已经详尽叙述了。
2025-01-26 23:48:28
136
原创 寒假第一专题总结
(对时间复杂度影响不大,但是26倍还是能省则省吧)我们可以采取更高效的,先用数组储存,然后从后面开始往前推,这样1->3时只需要让map[1]=map[3]即可。这题也有很多思路,,我们完全可以以O(n)的时间复杂度下统计出ABCDEFG的量。也可以运用multiset(自认为挺好用的)进行count,虽然效率可能慢点,但是可以让我们在同样复杂度下省略用数组存储的步骤。以第一题string类型编写为例,这题我使用了assign,而非用循环写出n+1个o,将第一个改成L,而非直接循环破解。
2025-01-23 18:54:17
203
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅