随笔分类 - 思想——单调性(单调队列/单调栈)
摘要:I.V.UOJ#284. 快乐游戏鸡 我们来思考一下你游戏的过程:每次找到一个最浅的 大于当前死亡次数的位置 ,走到那儿;不断这样,直到下面两件事中有一件先发生: 你当前的死亡次数允许你一路走到终点。 你的死亡次数已经不小于 ,需要寻找新的 。 然后
阅读全文
摘要:XXIII.[JOI 2020 Final] 火事 题解
阅读全文
摘要:XXII.CF477E Dreamoon and Notepad 题解
阅读全文
摘要:IX.[BJOI2017]树的难题 debug三天,精神崩溃 论一行if(vis[v[x][r].second]){r++;continue;}忘记加上后所有代码全都莫名其妙TLE且查不出锅的痛苦 首先,我们考虑常规淀粉质。 我们考虑一条路径,它会被(淀粉质的分治根)截成两段。如果我们对于分治树中的
阅读全文
摘要:XXXVI.LOJ#6198. 谢特 SA+笛卡尔树+01trie+启发式合并模板四合一,省选模板练习必备神器 考虑SA后建立笛卡尔树。问题转换为在笛卡尔树的一段区间中(此时该区间内任意两条后缀的LCP长度均为区间中 最小值)任意两条后缀的 最大值。是经典
阅读全文
摘要:XXXII.CF1063F String Journey 题解
阅读全文
摘要:XXX.[CTSC2012]熟悉的文章 题解
阅读全文
摘要:XXVIII.[BZOJ3277]串/CF204E Little Elephant and Strings 这两题是重题,代码改都不改交上去就能A,故放在一起讲。 网上的大多数SA题解都是或的复杂度,太令人不爽了。因此,这里有一种复杂度的
阅读全文
摘要:XX.【模板】后缀自动机 (SAM) 俗话说的好,模板题怎么能用模板水过去呢 我们考虑用建出数组,然后用单调栈求出每个最多能向左向右延伸多远(VI.[AHOI2013]差异),然后直接一边扫过求即可。 复杂度,假如你用DC3的话。但是用倍增实际跑起来也真的超快
阅读全文
摘要:XV.Annihilate 我当年为什么会手贱开这卡常大毒瘤题呀 思路1. 用vector存下每个字符串在后缀排序后的下标,然后每次枚举两个串,用一个vector里面的数在另一个里面two-pointers找到它两侧的数,然后用ST表求LCP。 时间复杂度$O\Big(\sum|S|(\log\su
阅读全文
摘要:X.[SCOI2012]喵星球上的点名 我居然做出了这题……难以置信! 首先,思路很明显是把所有串全怼一起(包括名字和询问串),加上分隔符,然后跑一遍后缀数组。 我们仍然可以用单调栈求出关于每个询问串与它相同的区间。即,如果以询问串为前缀的那个后缀的是的话,它的合法区间$[L,R]
阅读全文
摘要:VIII.[SDOI2008]Sandy的卡片 ……有什么意义吗…… 差个分,然后就是IV.[POI2000]公共串的内容了,套个单调队列,解决,假如你用DC3的话。 代码: #include<bits/stdc++.h> using namespace std; int all,n,m
阅读全文
摘要:VII.[HAOI2016]找相同字符 第一道自己做出的SA题祭~~~ 实际上和上一题没啥区别的说…… 我们发现,这题实际上就是对于两个串中所有的后缀求个前缀是相同的,即串中有这么多子串是相同的)。 老套路,俩串
阅读全文
摘要:VI.[AHOI2013]差异 这个柿子可以拆成两部分,即 \(\sum\limits_{1\leq i<j\leq
阅读全文
摘要:V.UVA11107 Life Forms 这题同上题类似,只不过把“在全部串中出现”变成了“在超过一半(即)个串中出现”。 这题中我的方法是上题中提到的“two-pointers+单调队列”算法。第一遍跑求出所有满足“出现
阅读全文
摘要:III.[USACO06DEC]Milk Patterns G 同上一题思路类似,我们仍然建出后缀数组。 考虑任何出现次的子串,以它们作为前缀的后缀在数组中一定是连续的——这一点可以从上文中的直接看出,因为相邻的结果一定大于等于不相邻的结果。 因此我们只需要求出数
阅读全文
摘要:CXLVII.[NOI2016] 国王饮水记 首先,我们一定可以舍去那些高度比 还小的城市,并且将剩余的高度比 大的城市排序,使得 到 递增。 我们不妨从三座城市想起。假如可以合并两次,应该怎么合并? 先合并 ,再合并
阅读全文
摘要:CXXXVI.[IOI2000] 邮局 加强版 Observation 1. 若一段村庄中设一个邮局,则邮局一定设在其中位数(若是偶数则任一中位数)的位置。 Observation 2. 若令 为区间 中村庄设一个邮局的费用,则其满足四边形不等式。 Obse
阅读全文