随笔分类 - 数据结构——基础数据结构(栈/队列/链表)
摘要:I.V.UOJ#284. 快乐游戏鸡 我们来思考一下你游戏的过程:每次找到一个最浅的 大于当前死亡次数的位置 ,走到那儿;不断这样,直到下面两件事中有一件先发生: 你当前的死亡次数允许你一路走到终点。 你的死亡次数已经不小于 ,需要寻找新的 。 然后
阅读全文
摘要:XLVI.CF1408G Clusterization Counting 很明显,将边按照权值从小到大排序后,依次用冰茶姬合并,如果任意时刻出现了团,则这个团显然是唯一合法的可能。人脑思考可得这个团之间的关系肯定是个划分树关系(即一个大团裂成许多小团的树形关系),因此总合法团数是
阅读全文
摘要:XLI.[NOI2017] 蚯蚓排队 算算数据范围,可以哈希,只需要将所有长度在 以内的串扔进哈希表,然后询问时找到对应的串的出现次数即可。 这里的哈希表必须用双哈希,其中第一维开在数组范围内,然后第二维作为链表挂在后面,因此范围可以无限大。不过因为要在 int 内处理,因此我两个模数
阅读全文
摘要:XXXV.CF36E Two Paths 为什么这题会被归到数据结构博客里呢?因为我的代码使用了大剂量的 STL。 我吹爆 list 有没有!再也不手写链表了(并不),但是在欧拉路问题上真的贼好用! 首先,覆盖所有边恰一次,妥妥的欧拉路模型。 然后就先考虑如何判无解了。怎样无解呢? 有少于 \(2\
阅读全文
摘要:XXVI.CF1458C Latin Square 实际上此题使用的数据结构不很高级,甚至可以说很不高级——因为全程只用了数组。但是本题的思想绝对是非常高级的。 我们考虑上数据结构维护该操作。上下左右移动显然是没问题的;但是行中列中轮换应该咋办呢? 我们先考虑如果只有行上轮换应该怎么办。这玩意没什么
阅读全文
摘要: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的话。但是用倍增实际跑起来也真的超快
阅读全文
摘要: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+单调队列”算法。第一遍跑求出所有满足“出现
阅读全文