摘要: 题面 洛谷 Bzoj 题解 很容易想到$O(nk)$的树形$dp$吧,设$f[i]$表示处理完这$i$颗子树的最小花费,同时再设一个$mi[i]$表示$i$到根节点$1$路径上的距离最小值。于是有: $ f[i]=\sum min(f[son[i]], mi[son[i]]) $ 这样就有$40$分 阅读全文
posted @ 2018-12-24 08:09 water_mi 阅读(288) 评论(1) 推荐(0) 编辑
摘要: 题意 给你长度为$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 阅读(267) 评论(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 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 题面 题解 对于操作$1$,我们可以对于每个节点打一个$add$标记,下放就行了 对于操作2,可以参考这篇题解的上一篇,不赘述 对于操作4,可以将区间裂成两部分,然后再插入合并 对于操作5,可以将区间裂成三部分,删除其中一个部分,合并其他两部分 对于操作6,打一个$min$标记,具体可以看代码。 对 阅读全文
posted @ 2018-12-22 11:47 water_mi 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 题意 给出一个长为$n$序列$[1,2,...,n]$,$m$次操作,每次指定一段区间$[l,r]$,将这段区间翻转,求最终序列 题解 虽然标题是$Splay$,但是我要用$FHQ\ Treap$,考虑先将$[l,r]$这段区间$split$出来($k$即为这段区间) 然后再将这段区间打一个翻转标记 阅读全文
posted @ 2018-12-22 09:00 water_mi 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 题面 题解 字符很麻烦,不妨用数字代替(比如1代表'W') 接着,像这种两个子串可以合并成另一个子串的题可以考虑区间$DP$ 设$bool$数组$f_{i,j,k}$表示区间$[l,r]$能否合成单个字符$c_k$ 于是就可以套区间$DP$的板子了 阅读全文
posted @ 2018-12-20 17:19 water_mi 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 题面(权限题就不放题面了) 题解 三元环模板题,按题意模拟即可。 cpp include include include using std::vector; const int N = 1e5 + 10, M = 2.5e5 + 10; int n, m, a[N], deg[N], u[M], 阅读全文
posted @ 2018-12-15 11:06 water_mi 阅读(251) 评论(0) 推荐(0) 编辑
摘要: Day1 T1 据说是原题积木大赛,但是考场上蠢了,只会写数据结构,于是写了一个线段树$+$堆$+$贪心,先选出最小的,然后区间修改,然后把左右两端区间的最小值丢进堆里,不停从堆中去最小值更新即可(模拟题) 阅读全文
posted @ 2018-11-10 20:49 water_mi 阅读(1966) 评论(0) 推荐(0) 编辑
摘要: 10.13 初赛 Day 1 考前 这一次的考场从暗♂德华兴改到了长沙市一中,一进去:我一看,考场在哪???这一中比长郡大了好多,而且连指示牌都没有,这时碰见了谢总,谢总告诉我们在第二教学楼。路上还碰见了psj和fdf,匆匆忙忙进了考场,发现考场内没什么人,于是决定去上个厕所愉♂悦身心,之后聊了一会 阅读全文
posted @ 2018-11-10 20:39 water_mi 阅读(647) 评论(8) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-11-09 22:10 water_mi 阅读(5) 评论(0) 推荐(0) 编辑