上一页 1 ··· 31 32 33 34 35 36 37 38 39 ··· 58 下一页
摘要: XVIII.[HEOI2016/TJOI2016]字符串 作为一个理智正常的OIer,二维数点的题说什么都应该离线线段树通过而不是大力搞主席树呀((( 我们发现这题询问中$s[c,\dots,d]$中这个“\(d\)”是不重要的,只需要把最终结果同$(d-c+1)\(取\)\min$即可,因此忽略不 阅读全文
posted @ 2021-04-01 10:50 Troverld 阅读(73) 评论(0) 推荐(0) 编辑
摘要: XVII.[USACO17DEC]Standing Out from the Herd P 一个naive的思路就是将所有串拼一起然后后缀排序,找出所有连续的来自同一个串的后缀。考虑结合I.不同子串个数思考,则如果该区间是$[l,r]\(的话,它的贡献应该是\)\sum\limits_{l\leq 阅读全文
posted @ 2021-04-01 10:47 Troverld 阅读(51) 评论(0) 推荐(0) 编辑
摘要: XVI.[NOI2015]品酒大会 我居然能自己AC NOI的原题,后缀数组果然简单 首先当然是轻松建出SA。 我们考虑借鉴XII.[TJOI2015]弦论的思想,建出笛卡尔树。则对于当前的$ht$长度,它出现在了$(l,r)\(区间里的每一个后缀里,共计\)\dfrac{(r-l+2)(r-l+1 阅读全文
posted @ 2021-04-01 10:44 Troverld 阅读(59) 评论(0) 推荐(0) 编辑
摘要: XV.Annihilate 我当年为什么会手贱开这卡常大毒瘤题呀 思路1. 用vector存下每个字符串在后缀排序后的下标,然后每次枚举两个串,用一个vector里面的数在另一个里面two-pointers找到它两侧的数,然后用ST表求LCP。 时间复杂度$O\Big(\sum|S|(\log\su 阅读全文
posted @ 2021-04-01 10:42 Troverld 阅读(124) 评论(0) 推荐(0) 编辑
摘要: XIV.[SDOI2016]生成魔咒 动态SA?这怎么办? 我们考虑往每个后缀后面全都加入一个数。很明显,如果这样搞的话,你必须每加入一个数后都要重新后缀排序,不太可能完成。 这时,我们发现,如果这不是加入一个数,而是加入一整条后缀,那就会轻松很多,一个平衡树就能搞定。 思考后会发现,如果我们将整个 阅读全文
posted @ 2021-04-01 10:40 Troverld 阅读(35) 评论(0) 推荐(0) 编辑
摘要: XIII.[BJWC2010]外星联络 和上题一样,没啥好说的,直接建出笛卡尔树即可。 代码: #include<bits/stdc++.h> using namespace std; int stk[500100],tp,L[500100],R[500100],id,pt; namespace S 阅读全文
posted @ 2021-04-01 10:38 Troverld 阅读(46) 评论(0) 推荐(0) 编辑
摘要: XII.[TJOI2015]弦论 题解 阅读全文
posted @ 2021-04-01 10:36 Troverld 阅读(38) 评论(0) 推荐(0) 编辑
摘要: XI.[APIO2014]回文串 题解 阅读全文
posted @ 2021-04-01 10:33 Troverld 阅读(38) 评论(0) 推荐(0) 编辑
摘要: X.[SCOI2012]喵星球上的点名 我居然做出了这题……难以置信! 首先,思路很明显是把所有串全怼一起(包括名字和询问串),加上分隔符,然后跑一遍后缀数组。 我们仍然可以用单调栈求出关于每个询问串与它相同的区间。即,如果以询问串为前缀的那个后缀的$rank$是$p$的话,它的合法区间$[L,R] 阅读全文
posted @ 2021-04-01 10:31 Troverld 阅读(50) 评论(0) 推荐(0) 编辑
摘要: IX.[JSOI2007]字符加密 这题的思路非常简单——断环复制成链,然后直接后缀排序一下即可。 为什么呢? 我们考虑两条后缀。假如它们在前$n$位中有所不同,显然它们之间的相对顺序不会有问题; 否则,假如它们前$n$位全都相同,则因为反正最后输出的就是最后一个字符,所以相对顺序没有影响,直接按照 阅读全文
posted @ 2021-04-01 10:29 Troverld 阅读(54) 评论(0) 推荐(0) 编辑
上一页 1 ··· 31 32 33 34 35 36 37 38 39 ··· 58 下一页