
专题
文章平均质量分 93
ハルカナソラヘ
果てなく続いて行く、
生きとし生けるものは。
抗うことの出来ない、
散り行く因縁抱いて。
記憶の隙間で ただ微笑む瞳が 儚く零れた、
運命さえ 光で照らして行く。
闇を離した この手を繋ぐ、
穢れなき宵 咲き誇るように。
夢から覚めた 昨日の声を、
ずっと聞かせて 独り歩いて行く。
展开
-
生成函数学习笔记
文章目录生成函数学习笔记前置知识导数理解简单函数复杂函数四则运算复合函数反函数积分泰勒展开常用函数的泰勒展开式莱布尼茨公式广义二项式定理普通生成函数(ogf)数列 转 ogf形式幂级数常见ogf指数生成函数(egf)题目[BZOJ3028 食物](https://darkbzoj.tk/problem/3028)DescriptionSolutionCode生成函数学习笔记前置知识导数理解对函数进行拟合简单函数f(x)f(x)f(x)f′(x)f'(x)f′(x)ccc0原创 2021-01-04 10:38:00 · 448 阅读 · 1 评论 -
20201123
T1 P3900 [湖南集训]图样图森破题解T2 #77. A+B Problem题解原创 2020-11-23 08:21:50 · 144 阅读 · 0 评论 -
20201120 专题:斐波那契数列
总览:只是来证一下这个公式的……令斐波那契数列为F(1)=1F(2)=1F(i)=F(i−1)+F(i−2) (n≥3)F(1)=1\\F(2)=1\\F(i)=F(i-1)+F(i-2)\ (n\geq3)F(1)=1F(2)=1F(i)=F(i−1)+F(i−2) (n≥3)有gcd(F(n),F(m))=Fgcd(n,m)gcd(F(n),F(m))=F_{gcd(n,m)}gcd(F(n),F(m))=Fgcd(n,m)...原创 2020-11-20 22:01:58 · 214 阅读 · 0 评论 -
20201119 专题:卷积求解字符串匹配
总览:时间复杂度:O(nlogn)O(nlogn)O(nlogn)可解带通配符的字符串匹配一般字符串匹配模式串 aaa 和匹配串 bbb,求 aaa 在 bbb 中的出现次数和位置len(a)=n,len(b)=mlen(a) = n,len(b) = mlen(a)=n,len(b)=m默认下标从零开始有匹配函数F(x,y)=A(x)−B(y)F(x,y) = A(x) - B(y)F(x,y)=A(x)−B(y)F(x,y)=0F(x,y) = 0F(x,y)=0 时表示 Ax=B原创 2020-11-19 21:23:05 · 282 阅读 · 0 评论 -
20200924 专题:李超线段树
总览:维护若干一次函数的最值李超线段树的结构和普通线段树一样的,只是它每个节点存的是该区间优势最大的线段(优势最大即暴露在最高折线中横坐标跨度最大)李超线段树并不严格,只需满足包括单点的所有线段树区间“优势最大线段”中含有该单点的优势最大线段即可。会出现如果一整个区间最高折线都被一条线段占了的话,只有最大的区间的“优势最大线段”是该线段的情况插入时每个区间分类讨论单点查询时遍历所有区间T1 P4254 [JSOI2008]Blue Mary开公司思路:板子题代码:#include <原创 2020-09-24 19:49:06 · 242 阅读 · 0 评论 -
20200901 专题:斜率优化
总览:类似 fi=ai×bj+ci+djf_i=a_i\times b_j+c_i+d_jfi=ai×bj+ci+dj 的式子因为存在 ai×bja_i\times b_jai×bj 项,所以不能单调队列优化转化成 dj=−ai×bj+fi−cid_j=-a_i\times b_j+f_i-c_idj=−ai×bj+fi−ci类似于 y=kx+by=kx+by=kx+b,维护凸包其中 kkk 为 −ai-a_i−ai,bbb 为 fi−cif_i-c_ifi−ci,凸原创 2020-09-24 09:13:48 · 132 阅读 · 0 评论 -
20200918 专题:Kruskal重构树
总览:处理当一个图只能经过边权大于(小于)某个权值的边的问题对图做最小生成树,当合并两个点集时,建立新结点,并将联通两个点集的最小边权作为点权,将这个点作为原来两个点集的父亲树的节点树为 2n−12n-12n−1树上的叶节点为原图的点,一个非叶节点代表原图中一个最小生成树原图任意两个点路径上边权的最大值为它们树上的 LCA 的点权以每个节点为起点,走边权不超过一定值的边所能到达的点集为树上某一结点的子树,dfn 连续T1 P4768 [NOI2018]归程思路:先跑最短路,然后建树,节点上原创 2020-09-18 15:23:21 · 221 阅读 · 0 评论 -
20200915 专题:莫队进阶
总览:带修莫队:加一维时间排序时先按左右端点所在的块,然后按时间树上莫队:先树分块排序按左端点所在的块和右端点的 dfndfndfn 序转移时暴力修改,lcalcalca 特殊处理T1 P1903 [国家集训队]数颜色 / 维护队列思路:带修莫队板子代码:#include <bits/stdc++.h>using namespace std;#define re register#define LL long longtypedef unsigned int u原创 2020-09-17 11:10:50 · 105 阅读 · 0 评论 -
20200915 专题:FWT
总览:给出两个序列 A,BA,BA,B有Ci=∑j⊕k=iAj×BkC_i=\sum_{j⊕k=i}A_j\times B_kCi=j⊕k=i∑Aj×Bk⊕ 为一种位运算求序列 CCC代码建议背诵证明inline void OR(poly &a, int pos) { int len = a.size(); for (re int i = 1; (i << 1) <= len; i <<= 1) for (re int j =原创 2020-09-17 10:47:24 · 107 阅读 · 0 评论 -
20200915 专题:舞蹈链(DLX)
总览:解决覆盖问题用十字交叉双向循环链表优化搜索复杂度T1 P4929 【模板】舞蹈链(DLX)思路:板子题代码:#include <bits/stdc++.h>using namespace std;#define re register#define LL long longtypedef unsigned int uint;typedef unsigned long long ull;#define pb push_back#define mp make_p原创 2020-09-17 10:41:19 · 146 阅读 · 0 评论 -
20200912 专题:斯坦纳树
总览:给定一个包含 nnn 个结点和 mmm 条带权边的无向连通图 G=(V,E)G=(V,E)G=(V,E)再给定包含 kkk 个结点的点集 SSS,选出 GGG 的子图 G′=(V′,E′)G'=(V',E')G′=(V′,E′),使得:S⊆V′S\subseteq V'S⊆V′G′G'G′ 为连通图E′E'E′ 中所有边的权值和最小。你只需要求出 E′E'E′,中所有边的权值和这个问题可以用状压 DP 来解决首先容易发现一个结论:答案的子图一定是树证明:如果答案存在环,则删去环原创 2020-09-13 22:48:13 · 211 阅读 · 0 评论 -
20200912 专题:模拟退火
总览:随机出一个解如果比当前答案更优,更新答案如果不优,有选择地接受板子:inline void SA() { node now = ans; double T = 2000, delta = 0.996;//温度,退火参数 while (cp(T, 1e-10) == 1) { node k; get(k); double c=k-ans; if (cp(c, 0) == -1) now = ans = k; else if (ex原创 2020-09-13 22:23:45 · 122 阅读 · 0 评论 -
20200912 专题:最小乘积生成树
总览:给出一个 nnn 个点 mmm 条边的无向图,第 iii 条边有两个权值 ai,bia_i,b_iai,bi,求该图的一棵生成树 TTT ,使得 ∑ai×∑bi\sum a_i\times \sum b_i∑ai×∑bi 最小对于每一棵生成树,视作一个二维平面上的点,(∑ai,∑bi)(\sum a_i,\sum b_i)(∑ai,∑bi)使得 ∑ai×∑bi\sum a_i\times \sum b_i∑ai×∑bi 最小就是让点所在的反比例函数最靠近坐标轴于是先求出与 xx原创 2020-09-13 19:54:55 · 359 阅读 · 0 评论 -
20200908 专题:最近点对
总览:随机化可过大部分题……随机旋转坐标轴,按 xxx 排序,对每个点和后面几个点求距离,取最小KDtree可做分治是正常方法原创 2020-09-08 22:01:07 · 139 阅读 · 0 评论 -
20200908 专题:Pick定理
总览:当点的坐标为整数时三角形面积s 三角形内部点n 三角形边上的点wn+w/2−1=s三角形面积s\ 三角形内部点n\ 三角形边上的点 w\\n + w/2 - 1 = s三角形面积s 三角形内部点n 三角形边上的点wn+w/2−1=s面积叉积,边上的点就是向量的 gcd(x,y)gcd(x,y)gcd(x,y)T1 poj2954 Triangle思路:板子题代码:#include <bits/stdc++.h>using na原创 2020-09-08 21:47:39 · 192 阅读 · 0 评论 -
20200908 专题:动态凸包
总览:以一个点为基准点,用角度维护凸包插入一个点时,找到前驱后继,分别弹一下可以用 set 维护因为基准点在中间,所以用叉积判断方向时要先判象限T1 #1249. SGU277 HERO 动态凸包思路:板子题代码:#include <bits/stdc++.h>using namespace std;#define LL long longtypedef unsigned long long ull;typedef unsigned int uint;#define原创 2020-09-08 21:41:27 · 195 阅读 · 0 评论 -
20200908 专题:三角剖分
总览:valB,C,D,E=valB,C+valC,D+valD,E+valE,Bval_{B,C,D,E}=val_{B,C}+val_{C,D}+val_{D,E}+val_{E,B}valB,C,D,E=valB,C+valC,D+valD,E+valE,B以前一直不知道这叫三角剖分……T1 #2391. Cirno的忧郁思路:出题人真神仙,用维护面积的方法维护权值……sumi,jsum_{i,j}sumi,j 为 ΔO,i,j\Delta O,i,jΔO,i,j 的带符原创 2020-09-08 21:37:33 · 161 阅读 · 0 评论 -
20200908 专题:最小圆覆盖
总览:随机增量法圆的表示:((圆心(x,y)),半径r)((圆心(x,y)),半径r)((圆心(x,y)),半径r)初始圆为 ((0,0),0)((0,0),0)((0,0),0)、枚举每一个点,找到一个圆,使 p1−pnowp_1-p_{now}p1−pnow 在圆内枚举每一个点 pip_ipi,如果 pip_ipi 不在当前圆内,假设它在圆上,将圆设为 ((xi,yi),0)((x_i,y_i),0)((xi,yi),0)再枚举每一个它之前的点 pjp_jpj,如果 pjp_j原创 2020-09-08 20:59:06 · 197 阅读 · 0 评论 -
20200905 专题:KDTree
总览:处理多维空间的问题本质上是一棵二叉平衡树每一个子树的点都在一个矩形内,每个节点都以一个维度进行划分维度的选择可以轮换分割,随机,依据方差……复杂度玄学T1 P4357 [CQOI2016]K远点对思路:板子题代码:#include <bits/stdc++.h>using namespace std;#define LL long long#define re register#define pb push_back#define mp make_pair原创 2020-09-06 15:58:15 · 116 阅读 · 0 评论 -
20200903 专题:值域分块
总览:做了一道毒瘤题 带插区间k小并且树套树常数过大,过不去 (毒瘤出题人毒瘤卡常)于是就学习了新科技:值域分块实质是分块套分块,先给序列分块,再在每个块中给值域分块(分块用链表实现好方便具体题目具体分析T1 P4278 带插入区间K小值思路:bzoj一个点平均15s,luogu一个点1s……先对序列分块,方便取出 [l,r][l,r][l,r]再对值域分块,方便查询 kkk 小要 O(1)O(1)O(1) 查询 [l,r][l,r][l,r] 中值在 [vall,valr][val原创 2020-09-03 21:57:00 · 1139 阅读 · 0 评论 -
20200903 专题:Polya
总览:常常用到 Polya定理 来解决计数问题首先先引入置换群 ,置换简单来说就是对元素进行重排列,即 [1,n][1,n][1,n] 到 [1,n][1,n][1,n] 的映射。循环节就是映射中环的个数一种写法:σ=(1,3)(2,5)(4)\sigma = (1,3)(2,5)(4)σ=(1,3)(2,5)(4)循环节为 3Polya定理:M=1G∑k=1Gmc(σk)M=\frac{1}{G}\sum_{k=1}^Gm^{c(\sigma k)}M=G1k=1∑Gmc(σ原创 2020-09-03 21:37:51 · 171 阅读 · 0 评论 -
20200901 专题:Lucas
总览:组合数取模有(nm)=(n/pm/p)×(n%pm%p)(modp)\binom{n}{m}=\binom{n/p}{m/p}\times \binom{n\% p}{m\% p}\pmod p(mn)=(m/pn/p)×(m%pn%p)(modp)T1 #2982. combination代码:#include <bits/stdc++.h>using namespace std;#define LL long long#define re register原创 2020-09-01 20:51:39 · 95 阅读 · 0 评论 -
20200901 专题:BSGS
总览:有 xa≡y(modp)x^a\equiv y\pmod pxa≡y(modp)知 x,y,px,y,px,y,p,求 aaa优美的暴力有xi×m−j≡y(modp)xi×m≡y×xj(modp)x^{i\times m-j}\equiv y\pmod p\\x^{i\times m}\equiv y\times x^j\pmod pxi×m−j≡y(modp)xi×m≡y×xj(modp)当 mmm 取 ⌈p⌉\lceil \sqrt p\rceil⌈p⌉ 时枚举 j(0−m)原创 2020-09-01 20:46:21 · 95 阅读 · 0 评论 -
20200901 专题:回文自动机
总览:真·整个人都自动机了因为有奇偶回文串,所以有两个根,奇根偶根每一个节点代表一个回文串的后一半维护 len,代表回文串的长度维护 fail,类似 ACM,代表最长回文后缀注意初始化模板:const int A=5e5+5;char s[A];int len;int tot=1,las=0;//总结点数,末字符所在回文串struct PAM{ int ch[26]; int fail,len;}tr[A];inline int find(int x,int w){ wh原创 2020-09-01 19:52:18 · 210 阅读 · 0 评论 -
20200806 专题:manacher
总览:O(n)O(n)O(n) 找回文串Manacher算法本质上也是基于暴力匹配的方法,只不过做了一点简单的预处理,且在扩展时提供了加速Manacher 对字符串的预处理:在字符间添加符号,将偶回文串变成奇回文串在字符串首尾添加字符,防止越界基本概念:回文半径和回文直径:回文半径是包括回文中心在内的回文子串的一半的长度,回文直径则是回文半径的 2 倍减 **1 。最右回文边界:在遍历字符串时,每个字符遍历出的最长回文子串都会有个右边界,而R则是所有已知右边界中最靠右的位置,也就是说最右原创 2020-08-06 14:54:22 · 133 阅读 · 0 评论 -
20200804 专题:仙人掌(圆方树)
总览:无向仙人掌图的定义:任意一条边至多只出现在一条简单回路的无向连通图称为仙人掌。处理方法:建立圆方树圆方树的建点:原图中的点都是圆点对于每个点双连通分量,新建一个方点,这个方点和环上其它圆点连成菊花图对于不在环上的两个圆点,保留原图中的边根据仙人掌的性质,易证不存在相邻的两个方点边 (u,v)(u,v)(u,v) 权值的确定:若 u,vu,vu,v 都是圆点,则权值为原图中边权若 uuu 为方点,则权值为 vvv 到 uuu 父亲的最短路感性理解:对于图中每一个原创 2020-08-04 22:49:25 · 471 阅读 · 1 评论 -
20200803 专题:LCT
总览:用 splay 动态维护树的信息支持加边断边,换根等操作可以维护连通性板子:struct LCT { int ch[2], f; int rev;} tr[A];#define ls(x) tr[x].ch[0]#define rs(x) tr[x].ch[1]inline int isroot(int x) { return ls(tr[x].f) != x && rs(tr[x].f) != x; }inline void pushup(int x)原创 2020-08-03 16:21:33 · 141 阅读 · 0 评论 -
20200801 专题:线段树分治
咕原创 2020-08-02 15:53:25 · 139 阅读 · 0 评论 -
20200727 专题:生成函数(咕)
文章目录生成函数两类生成函数ogf基本运算形式幂级数常见ogfegf基本运算咕生成函数两类生成函数普通生成函数(ogf):F(x)=∑x=0+∞fnxnF(x)=\sum_{x=0}^{+\infty}f_nx^nF(x)=∑x=0+∞fnxn指数生成函数(egf):G(x)=∑x=0+∞gnxnn!G(x)=\sum_{x=0}^{+\infty}g_n\frac{x^n}{n!}G(x)=∑x=0+∞gnn!xnogf基本运算数列⇒函数{cfn}⇒cF(x){afn+bgn}⇒a原创 2020-07-27 14:22:56 · 276 阅读 · 0 评论 -
20200722 专题:矩阵树定理
总览:对于一个无向图 G ,它的生成树个数等于其Kirchhoff矩阵任何一个 N-1 阶主子式的行列式的绝对值。所谓的 N-1 阶主子式就是对于一个任意的一个 r ,将矩阵的第 r 行和第 r 列同时删去得到的新矩阵。Kirchhoff矩阵的一种求法:Kirchhoff矩阵K=度数矩阵D−邻接矩阵AKirchhoff矩阵 K =度数矩阵 D - 邻接矩阵 AKirchhoff矩阵K=度数矩阵D−邻接矩阵A度数矩阵D:a[i][i]=点i的度数度数矩阵 D:a[i][i]=点i的度数度数矩阵D:a原创 2020-07-24 09:30:02 · 182 阅读 · 0 评论 -
20200722 专题:虚树
总览:对于一棵树,仅仅保留有用的点,重新构建一棵树有用的点一般指的是询问点和它们的 lca一般题目的询问巨大,并且有 ∑询问点数\sum 询问点数∑询问点数T1 P2495 [SDOI2011]消耗战思路:直接 树形dp 会 TLE,于是建出虚树后在虚树上 dp虚树的构建:将询问点按 dfn 排序,然后用栈维护最外侧的链代码:#include <bits/stdc++.h>using namespace std;#define int long longnamespac原创 2020-07-22 16:36:46 · 112 阅读 · 0 评论 -
20200615 专题:多项式全家桶
文章目录多项式卷积FFTNTT分治NTT多项式求逆多项式ln多项式牛顿迭代多项式exp多项式快速幂多项式开根多项式除法多项式多点求值多项式开根和多点求值还没过,先咕着多项式卷积FFT(原理先咕着)精度炸裂#include <bits/stdc++.h>using namespace std;#define in Read()inline int in { int s = 0, f = 1; char x; for (x = getchar(); x < '0'原创 2020-07-18 16:48:49 · 259 阅读 · 0 评论 -
20200717 专题:欧拉回路
总览:欧拉通路定义:对于一个图,存在一条路径经过且只经过每边一次欧拉回路定义:对于一个图,存在一条路径经过且只经过每边一次,且起点与终点相同无向图判定:每个点的出度和入度都为偶数有向图判定:每个点的出度和入度相同寻找欧拉回路(保证存在):当遍历完一条边的所有路径后倒序输出这条路径inline void DFS(int x) { for (int y = head[x]; y; y = road[y].nex) { int z = road[y].to, d = road[y].原创 2020-07-17 19:13:56 · 138 阅读 · 0 评论 -
20200703 专题:线段树合并
总览:动态开点线段树,像暴力的合并(然而不是时间复杂度:O(nlogn)O(nlogn)O(nlogn)模板:inline int merge(int x,int y,int l,int r){ if(!x||!y) return x|y; if(l==r){ //将y合并到x return x; } int mid=(l+r)>>1; tr[x].ls=merge(tr[x].ls,tr[y].ls,l,mid); tr[x].rs=merge(tr[x].rs,t原创 2020-07-03 22:01:46 · 202 阅读 · 0 评论 -
20200603 专题:后缀数组(SA)
文章目录总览:定义构建总览:用来处理字符串问题定义int n,m;int sa[A],rk[A],hi[A];int tmp[A],t[A],p[A];n:数组长度m:字符集大小sa[i]:后缀排名第 i 位的串在原串上的位置rk[i]:原串第 i 位的串在后缀上的排名hi[i]:后缀排名第 i 位的串与它前一个串的最长公共前缀长度tmp:辅助数组t:基数排序用的桶p:排序时的第二关键字后缀数组有两个序列原串和后缀后缀按字典序排序如下图在后缀上计算相邻两个后缀的最大原创 2020-06-05 14:43:02 · 201 阅读 · 0 评论 -
20200530 专题:莫比乌斯反演
总览:前置:狄利克雷卷积:H=F∗GH(n)=∑d∣nF(d)G(nd)H=F*G\\H(n)=\sum_{d|n} F(d)G(\frac{n}{d})H=F∗GH(n)=d∣n∑F(d)G(dn)狄利克雷除法:H=FGH(n)=F(n)−∑d∣n,d≠1G(d)H(nd)G(1)H=\frac{F}{G}\\H(n)=\frac{F(n)-\sum_{d|n,d\neq 1} G(d)H(\frac {n}{d})}{G(1)}H=GFH(n)=G(1)F(n)−∑d∣n,d原创 2020-05-30 17:42:07 · 174 阅读 · 0 评论 -
20200311 专题:费用流
总览:(前置:20191025 练习:网络流(最大流最小割) ,20191018 专题:网络流(最大流最小割))全名最小费用最大流就是在网络流的基础上给每边加上了单位流量的费用,求流量最大时的最小费用代码也很简单把网络流中的BFS找深度改成spfa找费用就行关于spfa:他死了注意细节(代码里有标注)T1 P3381【模板】最小费用最大流P3381【模板】最小费用最大流题目描...原创 2020-03-11 22:29:53 · 162 阅读 · 0 评论 -
20200305 专题:三维凸包(咕)
咕~~~原创 2020-03-07 16:05:08 · 135 阅读 · 0 评论 -
20200228 专题:线性基
咕~~~原创 2020-02-29 17:44:50 · 131 阅读 · 0 评论 -
20200228 专题:扫描线(咕)
咕~~~原创 2020-02-28 22:46:17 · 116 阅读 · 0 评论