摘要: 题意 给你长度为$n$的序列,序列中的每个元素$i$有一个区间限制$[l_i,r_i]$,你从中选出一个子序列,并给它们标号$x_i$,要求满足 $,∀i<j,x_i<x_j$,且$, ∀i,x_i∈[l_i,r_i]$。 问满足条件子序列的长度最长为多少? 其中$1\leq n\leq3\time 阅读全文
posted @ 2018-12-22 18:02 water_mi 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 题面 洛谷 Bzoj 题解 首先,这种带修改的是不能用$SA$的,然后,我们做$SA$的题一般也能二分+$Hash$,所以不妨考虑用$FHQ-Treap$维护树,然后查询就用二分+$Hash$。 $Hash$怎么写? $ hash[o]=hash[lc[o]]\times base[siz[rc[o 阅读全文
posted @ 2018-12-22 16:04 water_mi 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 题面 题解 对于操作$1$,我们可以对于每个节点打一个$add$标记,下放就行了 对于操作2,可以参考这篇题解的上一篇,不赘述 对于操作4,可以将区间裂成两部分,然后再插入合并 对于操作5,可以将区间裂成三部分,删除其中一个部分,合并其他两部分 对于操作6,打一个$min$标记,具体可以看代码。 对 阅读全文
posted @ 2018-12-22 11:47 water_mi 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 题意 给出一个长为$n$序列$[1,2,...,n]$,$m$次操作,每次指定一段区间$[l,r]$,将这段区间翻转,求最终序列 题解 虽然标题是$Splay$,但是我要用$FHQ\ Treap$,考虑先将$[l,r]$这段区间$split$出来($k$即为这段区间) 然后再将这段区间打一个翻转标记 阅读全文
posted @ 2018-12-22 09:00 water_mi 阅读(263) 评论(0) 推荐(0) 编辑