- 博客(1203)
- 收藏
- 关注

原创 【持续更新】SA,SAM,manacher,回文树学习笔记
后缀数组功能将一个串ST所有后缀排序,并求出相邻排名后缀的LCPSA, rank, 基数排序倍增排序为了将从i开始的后缀排序,我们倍增长度t=1,2,4,8…,即我们考虑从每个i开始长度为2k的段,如果不足2k就到结尾为止。长度为1的段直接比较即可。为了比较两个长度为2k的段,我们只需要比较前一半(长度为2(k-1)的段)和后一半。因此,我们可以对于长度1,2,4,8…维护当前每一段的顺序,每次只需要利用前一次的结果进行双关键字排序即可。我们每次调用std::sort,复杂度O(nlog2n)
2020-08-18 22:52:00
487

原创 【持续更新】LCT学习笔记
前言之前没怎么打过LCT,这次来苏州集训乘机补一个坑LCT功能十分强大,它可以维护一个森林的一系列问题LCT的结构一句话来说,就是对于森林里的每棵树做轻重链剖分,每条重链用splay维护LCT基本操作Access这是LCT最关键的操作access(x)是把x弄到与根在同一个splay上的操作,也就是把x到根的虚边全部变实边过程大概是:将x splay到x所属平衡树的根令x的右儿子为x’(初始x’=NULL)这相当于把虚边边实边令x’=x x=fa[x]重复上述过程,直到跳到根上代
2020-08-17 16:42:43
473

原创 【持续更新】生成函数学习笔记
定义又称母函数是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。母函数可分为很多种,包括普通母函数、指数母函数、L级数、贝尔级数和狄利克雷级数。例题HDU1028可以看做每一个数都可以无限取于是生成函数为:(1+x+x2+x3….)(1+x2+x4+….)……(1+xn)#include<bits/stdc++.h>using namespace std;const int N=277;int f[N],g[N];int
2020-07-19 00:11:05
522
原创 【CCPC2024女生赛】【LIS计数】D. Excellent Splitting
给你一个排列,你需要把它划分成两个子序列 A、B。记fA为 A 的 LIS 长度,gB是 B 的 LDS 长度。问maxfAgB))
2024-11-07 15:21:38
739
原创 【CF2021E】Digital Village(All Version)
给你一张n个点m条边的无向图,有p个关键点。你需要选择k个点染黑,使得这p个关键点到这k个黑点的代价和最小。定义代价为两点之间边权最大的边的最小值。你需要求出 k = 1,2,…,n 的所有答案。
2024-10-07 21:06:42
1455
原创 【学习笔记】kruskal重构树
最近一场div2没开出C2,猛掉104分。赛后补E,发现自己连E1都没思路,一问才知道是kruskal重构树。好吧,OI时期欠下的债该还了。
2024-10-07 12:55:28
988
原创 【min25筛】【CF2020F】Count Leaves
定义fn01fnd∑k∣nfkd−1给出nkd,你需要求出:i1∑nfikdmod1097n≤1e9kd≤1e5。
2024-09-30 17:41:48
1286
原创 【学习笔记】exkmp(Z函数)
exkmp 和 kmp 要求的东西比较类似。exkmp 可以求出aina_{i...n}ai...n和bbb的最长公共前缀。这玩意也称 z 函数。
2024-09-24 18:46:27
791
原创 【学习笔记】线段树合并
一般来说,线段树会有On个节点。但是有的时候,整棵线段树就只进行了一次插入操作,这样只会有Ologn个节点。处理树上问题时,我们有时需要把儿子的信息合并到父亲节点。这个时候可以使用,常数小,但复杂度多一个log。或者,我们也可以使用线段树合并。
2024-09-15 10:50:49
1328
原创 【学习笔记】用线段树维护区间计数问题
简单的区间计数问题可能直接推式子就行了。但有些问题必须要数据结构维护。线段树就是一个比较好的处理区间的数据结构。
2024-08-09 17:11:16
1008
原创 【主席树】CF786 C. Till I Collapse
考虑哪些点才会对答案有贡献:只有在询问区间内第一次出现的点才会有贡献。也就是说,假如我们询问的是。但是如果题目要求强制在线,我们就可以用主席树来解决。不难发现,这是一个经典的二维偏序问题。离线下来随便维护一下就行。上一次出现的位置,如果前面没出现过则等于 0。怎么样把它变成主席树上二分呢?如果直接维护区间内的不同颜色,将会很难维护。当左端点固定时,右端点可以用二分来确定。很显然,线段的个数是调和级数。,查询只需要查询根的范围在。,每一棵线段树对应一个。的位置才能产生贡献。
2024-08-05 23:37:06
627
原创 【学习笔记】后缀自动机(SAM)
对于一个子串ttt,它在原串sss里面的结束位置集合记为endpostendpos_tendpost比如sabcbcs = abcbcsabcbctbct = bctbc,那么endpost24endpost24(假设字符串从0开始编号)
2024-08-03 17:41:27
1162
原创 【学习笔记】决策单调性优化DP
GDCPC还在发力,清华出题组出的牛客还是 4 题。这次没有min25筛,不然我能5题(bushi除了一道用 prufer 序列的恶心 DP 外,还有一道DP题是一个状态难想,并且还需要决策单调性优化的DP,被认为是偏简单的银牌题。
2024-08-02 21:58:02
1072
原创 【GDCPC2024】【min_25筛】J.另一个计数问题
所以我们只需要用 min25筛 求出质数的和还有平方和就可以啦。考场上的思路和正解差远了,属实是反演学魔怔了。是在整除分块中求过的,可以直接用。注意,不要跑两遍,会T。那么,答案就可以转换成。
2024-07-14 21:45:22
810
原创 【动态维护树的直径】【HBCPC2023】I. Colorful Tree
其实相当于是分别求黑色点和白色点所构成的树的直径。由于题目要给链染色,所以只能树剖+线段树维护。当两个连通块连在了一起,假设它们的直径是。,那么新连通块的直径一定是。白色的点倒过来求一遍即可。
2024-05-24 15:17:18
419
原创 【容斥】【CF1900D】Small GCD
求解下列式子:∑i=1n∑j=1i−1(ai,aj)×(n−i)\sum_{i=1}^n \sum_{j=1}^{i-1} (a_i,a_j)\times(n-i)i=1∑nj=1∑i−1(ai,aj)×(n−i)n≤8e4,ai≤1e5n≤8e4,a_i≤1e5n≤8e4,ai≤1e5写反演写魔怔了,所以上来直接一个反演最后的式子是这样的∑i=1n(n−i)∑d∣aiϕ(d)cntd,i\sum_{i=1}^n (n-i) \sum_{d|a_i} \phi(d)cnt_{d,i}i=1∑
2024-02-05 12:43:02
701
原创 【学习笔记】莫比乌斯反演
退役OIer回来受虐啦μ(x)={1x>1(−1)nx=∏i=1nPi0otherwise\mu(x) = \begin{cases} 1 & x > 1 \\ (-1)^n & x = \prod _ {i=1} ^ {n} P_{i}\\ 0 & otherwise \end{cases}μ(x)=⎩⎨⎧1(−1)n0x>1x=∏i=1nPiotherwiseφ(n)=∑i=1n [gcd(i,n)=1]\varphi(n)=\sum_{i=1}^{n}\ [gcd(i,n)=1]φ(n)=i
2023-10-08 20:38:15
419
原创 【2-SAT】【前缀和优化建图】【ICPC网络赛第二场】C. Covering
分成了若干个集合,每个集合只能选1个点。但如果用2-SAT做就会有。现在我们额外开2*n个点,分别用于前缀和后缀。就一定要选,2-SAT可以很好地解决。条边,所以需要考虑前缀和优化建图。可以发现,我们这个图和原图是等价的。对于限制2,可以发现,如果。对于限制1,其实就是把。
2023-09-25 23:08:33
559
原创 【模板】2-SAT
有n个布尔变量x1∼xn,另有m个需要满足的条件,每个条件的形式都是 「xi为truefalse或xj为truefalse比如 「x1为真或x3为假」、「x7为假或x2为假」。2-SAT 问题的目标是给每个变量赋值使得所有条件得到满足。
2023-09-24 23:20:03
156
原创 【gym102978H】【xjoi省选模拟】Harsh Comments
题目https://codeforces.com/gym/102978/problem/H思路做法和[PKUWC2018]猎人杀类似,且这题不需要多项式科技。我们发现答案只与 bbb 的大小有关,而对于一个 bbb 不产生贡献的条件是在所有 AAA 删掉之后删。且由于期望的线性性,我们只需要考虑 M=1M=1M=1 的情况,然后把它们的贡献加起来就好。然而我们发现这个东西并不好算,但是我们可以很容易算出 bbb 在所有 AAA 删掉之前删的概率:bb+∑i=1nai\frac{b}{b+\sum
2021-03-04 09:52:52
1038
1
原创 【AtCoder nomura2020 F】【xjoi省选模拟】Sorting Game
题目https://atcoder.jp/contests/nomura2020/tasks/nomura2020_f?lang=en思路考虑给你一个序列如何判断合不合法。一个很显然的结论(1):如果存在 i<ji<ji<j且ai>aja_i>a_jai>aj且 aia_iai 和 aja_jaj 不相同的位数>1,那么这个序列就不合法。另外一个结论(2)是:捣乱的那个人只会从高位到低位删。证明:首先我们只需要存在一对逆序对不满足结论(1)这个
2021-03-01 19:52:28
489
原创 【模板】excrt
题目https://www.luogu.com.cn/problem/P4777思路发现之前忘记写博客了https://www.luogu.com.cn/blog/niiick/solution-p4777代码#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=1e5+77;ll a[N],b[N];int n;ll mul(ll x,ll y,ll mod){ retur
2021-02-03 17:49:51
280
1
原创 【模板】点分治
题目https://www.luogu.com.cn/problem/P4178思路https://www.cnblogs.com/bcoier/p/10526832.html代码#include<bits/stdc++.h>using namespace std;const int N=1e5+77;struct E{ int to,next,w;}e[N<<1];int f[N],siz[N],dis[N],yjy[N],n,m,k,rt,ans,ls[N
2021-01-25 15:31:54
283
原创 【xjoi 2021省选训练23】【CF346E】Doodle Jump
题目https://www.luogu.com.cn/problem/CF346E思路考试的时候花了3h没推出来(其实已经很接近了)首先有一个比较显然的结论:如果一个数落在 (p−a∗(p/a),n](p-a*(p/a),n](p−a∗(p/a),n] 上,那么这个数是没用的,容易证明前面的最大距离一定大于它。然后我们发现,如果我们走完一个周期,每次的起始位置变化是有规律的。可以发现,走完一个周期,它的起始位置会加上 a−(p mod a)a-(p\ mod\ a)a−(p&n
2021-01-22 19:00:21
543
原创 【模板】Pollard-Rho算法
题目https://www.luogu.com.cn/problem/P4718思路真的是阴间卡常模板题blog代码#include<bits/stdc++.h>#define ll long long#define ld long double#define ull unsigned long longusing namespace std;int T;ll ans,n;inline ll mul(ll x,ll y,ll p){ ll yjy=(ld)x/p*y
2021-01-21 15:49:12
376
原创 【wqs二分】【洛谷P4383】[八省联考2018]林克卡特树
题目https://www.luogu.com.cn/problem/P4383思路先考虑60分DP可以发现删完边后面那个操作是没什么意义的。题意转换成将一棵树分成k+1个联通块,其直径之和的最大值那么考虑设 fi,jf_{i,j}fi,j 为以 iii 为根的子树选了 jjj 条链的最大值。但是发现这样转移不了。考虑一下链的性质,对于每个点,它的度数最多为2,所以我们在前面加多一维表示度数。转一个时候枚举度数暴力转移就好啦。然后……好像状态不能再减少了呢……那只能考虑单调性了。假如你
2021-01-20 15:35:51
376
原创 【多项式ln+exp】付公主的背包
题目https://www.luogu.com.cn/problem/P4389思路https://www.luogu.com.cn/blog/tbr-blog/solution-p4389代码#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=4e5+77,mod=998244353;const ll g=3;int r[N];ll a[N],b[N],c[N],ia[N],
2021-01-18 20:09:18
333
原创 【容斥、二项式反演】【洛谷P4831】【xjoi2021省选训练22】Scarlet loves WenHuaKe
题目https://www.luogu.com.cn/problem/P4831思路不会有人用多项式吧(题目转换:将 1..m1..m1..m 各 222 个(表示纵坐标),填入 nnn 对无序二元组(表示行),且二元组内两数不同令 fn,mf_{n,m}fn,m 为答案, gn,mg_{n,m}gn,m 为 1..m1..m1..m 各有 222 个,放进 2n2n2n 个格子的方案数。先思考 g的计算:考虑选用了 n−in-in−i 对一样的数字,然后剩下的位置要从 m−n−im-n-i
2021-01-18 15:57:40
418
原创 【归纳总结】连续3次比赛低分——考试策略
今天已经是第3次比赛考这么低分了,我实在找不出什么理由借口来混过去了,所以有了这篇总结。失分原因总结了一下这几次,发现我好像都是想推某难题(看起来不难)的结论然后导致一些比较容易推的东西不够时间写,加上我调试本来就慢,导致最后没拿完应该拿的分。解决办法练习方面可以练一些数据结构题,练一些要考虑的细节比较多的题。这样有助于增强自己的调试能力(虽然可能会很自闭,但总比比赛的时候自闭好)还有就是多做CF的题,增强自己的推导能力(最好能做到每场比赛都保持那次差点打到rank6那次的水平)策略方面一道
2021-01-16 12:48:53
438
5
原创 【普通生成函数】[集训队作业2013]城市规划(简单有标号无向连通图计数)
题目https://www.luogu.com.cn/problem/P4841思路设 f(n)f(n)f(n) 为 nnn 个点的简单有标号无向连通图数目,g(n)g(n)g(n) 为简单有标号无向图数目。那么显然有g(n)=2Cn2=∑i=1nCn−1i−1f(i)g(n−i)g(n)=2^{C_n^2}=\sum_{i=1}^nC_{n-1}^{i-1}f(i)g(n-i)g(n)=2Cn2=i=1∑nCn−1i−1f(i)g(n−i)把 Cn−1i−1C_{n-1}^{i-1}Cn−1
2021-01-15 19:13:08
451
原创 【多项式开根+求逆】【CF438E】The Child and Binary Tree
多项式开根和exp大同小异F2(x)≡A(x) (mod xn)F^2(x)\equiv A(x)\ (mod\ x^n)F2(x)≡A(x) (mod xn)G(F(x))=F2(x)−A(x)G(F(x))=F^2(x)-A(x)G(F(x))=F2(x)−A(x)G′(F(x))=2F(x)G'(F(x))=2F(x)G′(F(x))=2F(x)套牛顿迭代F(x)=F0(x)−G(F0(x))G′(F0(x))=F02(x)−A(x)2F0(x)F(
2021-01-15 15:50:31
303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人