摘要: #链接 ##$String$ 我必须立刻对串串使用 $kmp$ ,并让 $nxt_i$ 向 $i$ 连边,于是可得一个森林。对于任意点 $x$ ,若 $y$ 是 $x$ 的祖先或自身,则有 $S_{1,y} = S_{x-y+1,x}$ ,满足条件 $1,2$ 。考虑条件 $3$ ,需满足 $2y> 阅读全文
posted @ 2022-07-20 18:24 (o-ωq)).oO 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2022-01-13 17:32 (o-ωq)).oO 阅读(42) 评论(0) 推荐(0) 编辑
摘要: ###链接 显然从位置 \(1\) 开始,找到第一个大于等于 \(s\) 的位置 \(pos\),设 \(val=\sum\limits_{i=1}^{pos} a_i\)。 若 \(val=s\) 直接输出即可,否则 \(a_{pos}\) 必然等于 \(2\),若 \(a_1=1\) 则 \(l 阅读全文
posted @ 2021-01-27 17:16 (o-ωq)).oO 阅读(153) 评论(0) 推荐(0) 编辑
摘要: ###链接 写一个 \(LCT\) 做法。 对于一个以 \(x\) 为根的 \(splay\) ,设 \(mx_x\) 为以 \(x\) 为根的子树中的答案,显然可以与 \(ls_x,rs_x\) 与虚子树中的 \(mx\) 取最大值。 显然只有经过 \(x\) 的链没有计算,我们考虑 \(x\) 阅读全文
posted @ 2021-01-18 13:37 (o-ωq)).oO 阅读(72) 评论(0) 推荐(0) 编辑
摘要: ###链接 调了好久。。。 我平常写平衡树时 \(push\) \(tag\) 的操作都习惯把 \(rev\) 数组清零,但在 \(LCT\) 中不行,因为 \(rev\) 储存了节点间的父子关系,直接清零会改变树的结构。 \(\frak{code}\) #include<bits/stdc++.h 阅读全文
posted @ 2021-01-10 20:56 (o-ωq)).oO 阅读(84) 评论(1) 推荐(0) 编辑
摘要: ###链接 发现是三维偏序,用 \(CDQ\) 分治处理出每个数顺序和倒序的满足条件的最长长度与相应的方案数,分别设为 \(f1,f2,g1,g2\)。 设 \(Max=\max\limits_{i=1}^n{f_{i,1}},sum=\sum\limits_{i=1}^n{[f_{i,1}=Max 阅读全文
posted @ 2020-11-24 09:09 (o-ωq)).oO 阅读(94) 评论(0) 推荐(0) 编辑
摘要: ###链接 贴一下青君大佬的博客~ #include<bits/stdc++.h> #define IL inline #define LL long long #define pb push_back #define pi pair<int,int> #define mk make_pair us 阅读全文
posted @ 2020-11-24 09:00 (o-ωq)).oO 阅读(70) 评论(0) 推荐(0) 编辑
摘要: ###链接 线段树分治 \(+\) 线性基 \(+\) bitset。 #include<bits/stdc++.h> #define IL inline #define LL long long #define pb push_back #define ls k<<1 #define rs k<< 阅读全文
posted @ 2020-11-24 08:57 (o-ωq)).oO 阅读(95) 评论(0) 推荐(0) 编辑
摘要: ###链接 有点像 P1972 [SDOI2009]HH的项链? 将区间按 \(r\) 排序,对于在线性基中的每个元素,其在序列中的位置肯定是尽量靠右,所以插入时如果插入值与线性基在某一位上都为 $1$,则比较其在序列中的位置,若插入值靠右则交换,继续插入。 #include<bits/stdc++ 阅读全文
posted @ 2020-11-24 08:54 (o-ωq)).oO 阅读(65) 评论(0) 推荐(0) 编辑
摘要: ###链接 因为 \(n \leq 10^8\),\(m \leq 10^5\),所以可以用一个域很大的权值线段树动态开点维护。 开始 \(L=1\),\(R=n\),\([L,R]\) 的点值看作 $1$,把一个位置的数提前相当于 \(L-1\) 的位置加 $1$,原来的位置 $1$ 变为 $0$ 阅读全文
posted @ 2020-11-21 19:16 (o-ωq)).oO 阅读(121) 评论(0) 推荐(0) 编辑