摘要: 单调队列的应用很常见,比如用于dp优化,以及滑动窗口问题等。 其思想也比较简单易懂。我们以求区间最大值的单调队列为例。 具体的来讲,我们让队头始终是最大的元素。为了保证数都在区间内,我们记录一个 $t$ 数组。该数组表示某个元素加入的时间。我们每次将新元素(设为 $x$)入队时,先将队头超时的元素弹 阅读全文
posted @ 2023-06-07 20:57 霜木_Atomic 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 可以和小狐狸说话嗷 阅读全文
posted @ 2023-06-07 19:57 霜木_Atomic 阅读(104) 评论(13) 推荐(0) 编辑
摘要: 欢迎来到我的友链小屋 展示本站所有友情站点,排列不分先后,均匀打乱算法随机渲染的喔! 友链信息 博客名称:麋鹿鲁哟博客网址:https://www.cnblogs.com/miluluyo/博客头像:https://pic.cnblogs.com/avatar/1273193/20190806180 阅读全文
posted @ 2023-06-07 18:23 霜木_Atomic 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 这一算法用于求最长回文子串。 思想上和 KMP 类似,都是利用已求出的部分去减少不必要的枚举。 我们设 $f_i$ 表示以 $i$ 为中心的最长回文子串长度。假设现在有一个以 $Q$ 为中心的回文子串,其右边界为 $mr$,现在需要去求 $Q$ 点右侧一点 $p$ 所对应的 $f_p$,我们设 $d 阅读全文
posted @ 2023-06-07 17:08 霜木_Atomic 阅读(13) 评论(0) 推荐(1) 编辑
摘要: [题目链接](https://www.luogu.com.cn/problem/P5261) 找数字,一眼数位dp。 考虑设计状态 $f(k, s, x, p)​$,表示当前在第 $k​$ 位,数字之和为 $s​$,这一位给下一位进位为 $x​$,乘 $D​$ 后和为 $p​$。 转移很显然: $$ 阅读全文
posted @ 2023-06-07 10:57 霜木_Atomic 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 题目链接 看到 \(n\) 很小,想到状压dp。 首先我们可以预处理出来每个状态的过桥时间和总重量。对于一个状态 \(s\),枚举它的子集 \(p\) ,令 \(q\) 为 \(p\) 在 \(s\) 中的补集,有 $$ dp_s = min(dp_p + dp_q)$$。 如果发现集合 \(s​\ 阅读全文
posted @ 2023-06-07 10:56 霜木_Atomic 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 题目 emm写这个题的题解不是因为它有多难,只是提醒一下自己要灵活一些…… 这个题一眼矩阵乘法。但是——仔细点!题干要求不能走回头路(就是一条边不能连续走两次)。你会痛苦地发现,普通的矩阵快速幂是无法随时变换邻接矩阵的,所以这个题没法做所以你只能考虑别的方式。 这时候一个小trick——边点互换!这 阅读全文
posted @ 2023-06-07 10:55 霜木_Atomic 阅读(2) 评论(0) 推荐(0) 编辑
摘要: # 状态压缩中枚举子集 #### 前言 在状态压缩中,有时会遇到集合间转移的题目,而如何找到某个集合的所有子集,成为了解决问题的关键。 #### 正文 首先,对于一个集合 $s$,我们可以通过它转换为二进制数后的 $0$ 和 $1$ 来表示一些元素的状态。如:选择和未选,经过与未经过。下文的集合均指 阅读全文
posted @ 2023-06-07 10:53 霜木_Atomic 阅读(201) 评论(0) 推荐(0) 编辑
摘要: [TOC] ## 一.KMP ### 引入 我们经常遇到字符串匹配问题。比如求一个长为 $m$ 的串 $a$ 在长度为 $n$ 的串 $b$ 中是否出现,或求出现多少次,等等。我们很容易想到 $n*m$ 的做法,就是以每一位为起点,一直向后匹配,直到失配或匹配成功。显然,这样的复杂度是无法接受的。 阅读全文
posted @ 2023-06-07 10:51 霜木_Atomic 阅读(56) 评论(0) 推荐(0) 编辑
摘要: #### 题意 给定一个主串 $s$ 和一些模式串 $p_i$,问主串中是否存在两个不相交的非空字串,拼起来和模式串相同。 考虑如何拼接 $p_i$。我们可以从前向后匹配一遍主串,找到 $p_i$ 的所有长度的前缀在主串中最先出现的位置,并记录下来;然后再从后向前跑匹配,每次匹配上一个后缀,就判断该 阅读全文
posted @ 2023-06-07 10:51 霜木_Atomic 阅读(10) 评论(0) 推荐(0) 编辑
摘要: [toc] ## T1农夫约的假期 ~~略~~ 好吧还是写一下。发现对于某一个点,向右移动一格的魔音值会变化他左侧波源的数量减去右侧波源的数量再乘上 $z$,向下移动也类似(就是改成上面的和下面的波源)。而且对于同一行或同一列,每次移动的变化是一致的,也就是说,每一行的最小值在移动之后仍为移动后这一 阅读全文
posted @ 2023-06-07 10:49 霜木_Atomic 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 题意:有 \(n\) 个盒子和 \(m\) 个熊孩子,每个熊孩子对应一个区间,盒子里有气球,每次踩爆一个盒子中的一个气球,若某个熊孩子对应的区间内气球全部被踩爆,则该熊孩子会很开心。求每次踩气球后开心的熊孩子个数,强制在线。 首先我没有想到怎么离线 看到区间, 首先我们想到线段树。由于只需要考虑空的 阅读全文
posted @ 2023-06-07 10:47 霜木_Atomic 阅读(32) 评论(0) 推荐(1) 编辑
摘要: 引入:堆是一种很常用的数据结构,可以在 $ O_{log(n)} $的复杂度内进行插入,以维护最大/最小值。但是,如果我们将两个堆合并,即使是启发式合并,时间复杂度也高达 $ O_{(size_a \times log(size_b))} $,而这是我们所不想看到的。那么,有没有一种更好的解决方案呢 阅读全文
posted @ 2023-06-07 10:45 霜木_Atomic 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 为啥只有T1和T2? ~~因为T3T4不会~~ ## T1:无所谓的第一道题 题意:给定一张 $n \times n$ 的 $01$ 方阵,请计算其中 X 的数目。 X 定义为用 $1$ 填充且形状为 X 的联通块。具体的,X 由左向斜线 \ 和右向斜线 / 构成,且需要保证左向斜线和右向斜线长度相 阅读全文
posted @ 2023-06-07 10:44 霜木_Atomic 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 一道结合了状压和矩阵快速幂的好题。 题目有一处bug就是这里的 \(p\) 应该是不大于m的…… 废话不多说,首先观察到 \(m\) 很小,每一行最多就有 \(64\) 种状态,所有首先考虑状压每一种摆放方案。这里可以搜索出来,具体可以参考P1896 互不侵犯这个题。同样,我们可以预先处 阅读全文
posted @ 2023-06-07 10:41 霜木_Atomic 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 以下内容可以看作日记,也可看做牢骚,随便咯,谁叫这个博客的主人是只懒狐狸呢~ ### 23/5/3 额呜,感觉自己有点脱离现实了 总是有种不知道自己在干啥的感觉 也许自己开始向往正常生活了? 不清楚 但是这个层次,何谈正常生活呢? 或许,如此,便是常态? 可是我又如此渴望一位挚友(虽然网上有一位了u 阅读全文
posted @ 2023-06-07 10:38 霜木_Atomic 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 首先,对于每个数 \(a\),都能与自己的倍数匹配,我们只需要令每个数所能匹配到的倍数的和最小,又因为每个数只能用一次,\(a\) 与 \(a\) 的倍数是一一对应的关系,所以我们想到二分图匹配。 考虑到最坏情况就是,这 \(n\) 个数都相同,那么最大匹配的就是 \(a\times n 阅读全文
posted @ 2023-06-07 10:36 霜木_Atomic 阅读(9) 评论(0) 推荐(0) 编辑