![](https://img-blog.csdnimg.cn/direct/20c1f3d2ab534428bc76dbd66e25b378.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
KANO算法
文章平均质量分 69
记录一些算法
kano07
欢迎来看我的算法笔记博客kano07.icu
展开
-
ST表(模板讲解,在线修改)
本文并非st表零基础教程,不适合对ST表没有基础的人阅读。利用倍增思想,求解静态RMQ(区间最值查询)的算法利用O(nlog2n)复杂度预处理,进行O(1)的查询倍增思想: 2的i次增长。原创 2024-07-23 08:25:00 · 349 阅读 · 0 评论 -
卡特兰数(Catalan)
太神奇辣,卡特兰数原创 2024-05-18 23:30:08 · 1643 阅读 · 0 评论 -
主席树(可持久化线段树)与标记永久化(推导原理与应用)
今天写这道板子题,一开始我一直想不明白。为什么两个操作都是单点,要用线段树来维护,没有更方便的方法吗?原创 2024-05-18 20:57:24 · 801 阅读 · 0 评论 -
前缀异或常见题型
前缀和,压位,位运算,异或。原创 2024-04-25 10:38:00 · 354 阅读 · 1 评论 -
二维固定区间最值
然后我们得到了max_m和min_m,接下来只要知道i - m1 + 1到 i行的max_m和min_m的最值,相当于把各个max_m和min_m拼接到一起了。朴素的想法是直接暴力i到i+n1-1,一般的题也够用,如果要优化的话,就再来一次单调队列.解法有,单调队列,优先队列,滑动窗口.(优先队速度稍微慢点,多两logn)两次单调队列写法,只要把朴素后半部分改成如下的就行了。假如我们求n,m区间,n1,m1大小的区间的极差。问题处理的核心思想是,把二维的东西化成一维。相当于处理二维化一维,一维求区间最大。原创 2024-03-11 20:13:48 · 199 阅读 · 0 评论 -
线段树离散化讲解, 扫描线实现(左开右闭,双闭写法)
先讲一下线段树的离散化问题,如果直接按出现位次来离散的话会有问题比如1,50,100,150离散成了1,2,3,4.如果我们覆盖了1-2和3-4,看上去是全部覆盖了,但实际上50-10这个区间我们并没有覆盖到.有两种解决方法原创 2024-03-07 10:22:37 · 583 阅读 · 1 评论 -
同余和逆.
由同余定义得ax - b是m的y倍(y为未知整数)得ax + my = b(也就是二元线性丢番图方程),可以直接用解二元线性丢番图方程的方法解,也可以用逆的方法(下文逆应用写了)原创 2024-02-17 15:13:06 · 835 阅读 · 1 评论 -
线性丢番图方程(拓展gcd)
方程形如ax + by = c(a,b,c已知整数,x,y为变量,求整数解)原创 2024-02-17 14:24:36 · 317 阅读 · 1 评论 -
分块与基础莫队
定义n为数组长度,m为查询次数优雅的暴力,适合求解m == n == 1e5的问题, 或者m根号n ≈ 1e7的问题,空间约3n相比之下,线段树解决1e6,空间9n时间复杂度O(m根号n),主要处理区间问题原创 2024-02-10 17:03:11 · 229 阅读 · 1 评论 -
manacher(马拉车)最长回文子串问题的解决
马拉车,是一种动态规划算法,用来求解字符串S中最长回文子串的长度,时间复杂度O(n),同类场景最优解。原创 2024-02-10 16:58:08 · 176 阅读 · 1 评论 -
快速幂(二进制和指数折半两种推导思想)
有两种思想,但代码一样,指数折半或者利用二进制,即从十进制和二进制两种方向理解原创 2024-02-10 16:55:24 · 946 阅读 · 1 评论 -
最小生成树(Prim,Kruskal双解)(cpp+链式前向星)
解决最小生成树常见有两种方法,Kruskal和Prim,定义边数为m,点数为nKrusal时间复杂度O(mlog2m), sortO(mlog2n),并查集O(m)Prim时间复杂度O(mlog2n),加优先队列优化的情况下krusal全局贪心,Prim局部贪心(跟dij基本一样,dijkstra在一篇文章里同时提出了dij和krusal)原创 2024-02-10 16:41:53 · 357 阅读 · 1 评论 -
构造连续子序列问题
问题形如:现有整数数组num,取其中任意个数,和为sum,即记为可以取到sum.现问最少添加几个数才能取到1到n的所有数原创 2023-12-15 11:33:23 · 41 阅读 · 0 评论 -
单调栈的正序和逆序构造详解(附力扣难度题单)
正序和逆序只是角度不同,简单来说正序是把待比较的元素放到栈里,保持栈的单调递减逆序是把已经比较过的元素放到栈里,保持栈的单调递减无论正序逆天,都要保证栈的有序,并且需要及时去除无用数据原创 2023-12-11 18:34:42 · 187 阅读 · 1 评论 -
数位dp记忆化和递推两种方法图解(附难度题单)
dp[i]定义为i位数的每种数字有多少个(例如dp[2]代表00到99中某个数出现的次数,此处加前导0是为了使0和其他数一样)一图流dp[pos] [sum] [lead] [limit]表示限制条件中某数码出现的次数pos表示最低要求的数前有几位sum表示要求数开始有几位如要求2,dp[2] [1] 就是200-299, dp[2] [2] 表示2200-2299lead表示有无前导0有为true,否位falselimit代表数位限制如果能取到0-9取false,不能则取true。原创 2023-12-12 09:16:18 · 1864 阅读 · 0 评论