_____模板_____
文章平均质量分 91
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【模板】三维凸包
传送门题解:好像打不打乱期望复杂度都一样。考虑暴力增量,每次新加一个点,删掉所有站在这个点能“看到”的面,然后把空的地方连到这里就行了。记录一下每条边两个方向的面有没有被看到可以方便地实现。代码:#include<bits/stdc++.h>#define ll long long#define re register#define db double#defin...原创 2019-12-25 16:44:41 · 168 阅读 · 0 评论 -
【模板】Stoer-Wagner算法求全局最小割
传送门存个板子:代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constusing std::cerr;using std::cout;cs int N=607,INF=0x7fffffff;int n,m,S,T;bool vs[N],us[N];...原创 2019-11-22 20:24:29 · 200 阅读 · 0 评论 -
【模板】快速阶乘算法/阶乘模大质数(拉格朗日插值)(MTT)
洛谷板子传送门题解:首先,很显然地,我们需要一个低于O(n)O(n)O(n)的做法。考虑设多项式gd(x)=∏i=1d(x+i)g_d(x)=\prod\limits_{i=1}^d(x+i)gd(x)=i=1∏d(x+i)设s=⌊n⌋s=\lfloor\sqrt n\rfloors=⌊n⌋,则我们求出gs(0),gs(s),…,gs((s−1)s)g_s(0),g_s(s),\d...原创 2019-11-19 12:02:54 · 2120 阅读 · 0 评论 -
【CSP2019赛前模板复习2】
回文自动机:要是不卡空间我多半就懒得写manacher了。毕竟数据结构的函数式编程更适合我#include<bits/stdc++.h>#define ll long long#define re register#define cs constusing std::cerr;using std::cout;cs int N=5e5+7;char s[N];in...原创 2019-11-13 15:36:28 · 556 阅读 · 0 评论 -
【CSP2019赛前模板复习1】
放一下已经复习了的板子,目前题目全部都是luogu上面的。有一些省选的板子一起复习了。按照复习的顺序放的。只有代码,里面有一些奇怪的注释当没看见就好。动态DP:写的全局平衡二叉树,实现不是非常优秀但是够用了。#include<bits/stdc++.h>#define ll long long #define re register#define cs const...原创 2019-11-13 15:21:57 · 337 阅读 · 1 评论 -
2019.03.18【洛谷P4726】【模板】多项式指数函数/多项式Exp(NTT)(微积分初步)(泰勒展开)(牛顿迭代)
传送门解析:首先您需要会泰勒展开和牛顿迭代,或者您可以看接下来博主的口胡。前置知识一、泰勒展开其实泰勒展开的核心思想就是对于一些连续且在x0x_0x0处可导的函数,用一系列多项式函数去在x0x_0x0处无限逼近原函数,换句话说,就是构造一个在x0x_0x0处和原来的函数一模一样的函数。什么叫做一模一样?我们认为,函数值相同,一阶导数,二阶导数直到nnn阶导数全部相同,我们就认为这...原创 2019-03-18 18:38:17 · 934 阅读 · 0 评论 -
2019.03.18【洛谷P5245】【模板】多项式快速幂(NTT)(多项式Ln)(多项式Exp)
传送门解析:直接做的话还是可以mod  p\mod pmodp后做快速幂,那样的话就有两个log\loglog实际上由于a0=1a_0=1a0=1,可以考虑两边取对数:lnB(x)=klnA(x)\ln B(x)=k\ln A(x)lnB(x)=klnA(x)取对数,一乘,再exp回去就做完了。代码:#include...原创 2019-03-18 19:07:04 · 385 阅读 · 0 评论 -
2019.03.18【洛谷P5205】【模板】多项式开根(NTT)
传送门解析:考虑倍增:假设现在知道B02(x)≡A(x)(modxn2)B_0^2(x)\equiv A(x)\pmod{x^\frac{n}2}B02(x)≡A(x)(modx2n)现在显然有B(x)−B0(x)≡0(modxn2)(B(x)−B0(x))2≡0(modxn)B2(x)−2B(x)B0(x)+B02(x)≡0(modxn)B(x)≡A(x)+B02(x)2B0(x)(...原创 2019-03-18 19:23:40 · 140 阅读 · 0 评论 -
2019.03.18【洛谷P4512】【模板】多项式除法(NTT)
传送门解析:定义一种多项式操作:系数翻转。令F(x)F(x)F(x)最高次为nnn,系数翻转后的多项式FR(x)=xnF(1x)F_R(x)=x^nF(\frac{1}x)FR(x)=xnF(x1)。开始推式子:F(x)=Q(x)G(x)+R(x)F(1x)=Q(1x)G(1x)+R(1x)xnF(1x)=xn−mQ(1x)xmG(1x)+xn−m+1xm−1R(1x)FR(x)=...原创 2019-03-18 19:50:03 · 217 阅读 · 0 评论 -
【模板】最大流ISAP
存个板子#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ inline char get_char(){ static cs int Rlen=1<<20|1; static ch...原创 2019-03-29 21:09:38 · 172 阅读 · 0 评论 -
2019.03.18【洛谷P4725】【模板】多项式对数函数/多项式Ln(NTT)(入门微积分)
传送门解析:如果不会求导和积分的基础的话就去自学吧。首先明确一点,模意义下只能表示有理数,所以能够对多项式求LnLnLn的前提就是A0=1A_0=1A0=1现在解这个方程,两边同时求导:B(x)=F(A(x)),F(x)=ln(x)B′(x)=F′(A(x))A′(x)B(x)=F(A(x)),F(x)=\ln(x)\\B^\prime(x)=F^\prime(A(x))A^\p...原创 2019-03-18 17:48:22 · 332 阅读 · 0 评论 -
2019.03.18【洛谷P5264】【模板】多项式三角函数/多项式sin,cos(NTT)
传送门解析:一下设w4w_4w4为四次单位根,即在当前数域下,w44=1w_4^4=1w44=1。所有NTTNTTNTT模数下都有四次单位根。而复数中的四次单位根其实就是iii。代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define re register#define ...原创 2019-03-19 19:47:38 · 299 阅读 · 0 评论 -
【模板】vector<int> 封装模意义下的多项式操作
就是放一个自己用的版子,没有讲解。用vector主要是因为好写且好调。能在考场上用数组指针码出多项式的所有操作的“神仙”还是留给别人当吧反正我没见过谁真的为了跑的比vector快,去码了6,7K的操作,我见过的最长的是11K的多项式操作。写那么优秀有什么屁用呢?反正你考场上也写不完,其次所有用数组写的可读性比vector低一个档次,不好调试啊。而且开了O2可能还没有vector快。。。#...原创 2019-03-14 21:27:35 · 463 阅读 · 1 评论 -
2019.03.14【洛谷P4238】【模板】多项式求逆(NTT)
传送门前置知识:NTT什么?敢学多项式操作不会FFT/NTT?您还是洗洗睡了吧解析:我们发现,当只有常数项的时候,直接求逆元就可以了。相当于(modx)\pmod x(modx)现在考虑在知道了F(x)H(x)≡1(modx⌊n2⌋)F(x)H(x)\equiv 1\pmod {x^{\lfloor\frac n 2\rfloor}}F(x)H(x)≡1(modx⌊2n⌋)的情况下怎...原创 2019-03-14 21:20:19 · 189 阅读 · 0 评论 -
【模板】Lengauer-Tarjan算法求支配树
参考题目:洛谷P5180解析:填了N久之前留下的大坑,题解什么时候再写吧代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define re register#define gc get_char#define pc put_char#define cs constnames...原创 2019-01-14 21:27:58 · 464 阅读 · 0 评论 -
【模板】K短路的稳定复杂度求法
描述给出一个有向图,你需要求出SSS到TTT的所有路径中权值第kkk小的路径的权值。这里的第kkk小是指,将所有本质不同的路径的权值排序后(不去重),从小到大排名为kkk。数据保证KKK短路一定存在。数据卡A∗A*A∗以及乱搞+A∗A*A∗。输入第一行两个整数n,mn,mn,m表示点数和边数。然后mmm行三个整数ui,vi,wiu_i,v_i,w_iui,vi,wi表示m条边。...原创 2019-01-24 20:02:33 · 878 阅读 · 0 评论 -
2019.01.14【LOJ105】【洛谷P3391】文艺平衡树(FHQ treap)
LOJ传送门洛股传送门解析:很久没有写过平衡树了,恢复一下手感。FHQ_treap本身好写且常数不大。这道题只需要维护区间翻转,每次提取一个区间只需要按照sizsizsiz关键字splitsplitsplit出需要操作的序列部分来,然后该打标记的打标记,该下传的时候下传就行了。代码:#include&lt;bits/stdc++.h&gt;using namespace std;...原创 2019-01-14 18:43:52 · 235 阅读 · 0 评论 -
2019.01.23【BZOJ3337】【模板】ORZJRY I(块状链表)
传送门解析:我当时好像是受了一点刺激来写的这道题来着。。。首先这道题写平均O(nlogn)O(\sqrt n\log n)O(nlogn),最好O(nlogn)O(\sqrt n\log n)O(nlogn)的块状链表就卡的过去了。但是有一些操作是可以优化为O(n)O(\sqrt n)O(n)的。当然,您不用批评博主代码写得丑,要是您有过这种自己调试这种毒瘤数据结构题的经历,...原创 2019-01-23 21:39:20 · 479 阅读 · 0 评论 -
【模板】最大流HLPP
存两份板子,一份复杂度带log,用优先队列,另一份不带,但是空间消耗大一些。#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ inline char get_char(){ static cs i...原创 2019-03-29 21:11:39 · 315 阅读 · 0 评论 -
【模板】最小树形图 朱-刘算法
求某个点为根的最小树形图。算法分四步:1.每个点找到权值最小的入边。2.判断是否有环,没有直接进入第四步3.缩环为点,将没有选择的入边权值更改为自己权值减去当前点选择的权值,回到第一步4.将缩起来的环展开,得到最小树形图。正确性显然,迭代次数不超过O(n)O(n)O(n),每次迭代枚举所有边可以做到O(m)O(m)O(m),复杂度上界为O(nm)O(nm)O(nm),不过很难卡到。代...原创 2019-03-30 20:44:46 · 174 阅读 · 0 评论 -
【模板】最小割树 Gomory-Hu Tree
存个板子代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ inline char get_char(){ static cs int Rlen=1<<20|1; stati...原创 2019-03-30 20:48:30 · 410 阅读 · 0 评论 -
【模板】单纯形
代码:#include<bits/stdc++.h>#define re register#define cs constcs int N=26;int n,m,type,q[N],id[N*2];double a[N][N],ans[N];namespace LP{ cs double eps=1e-8,INF=1e15; inline void pivot(in...原创 2019-09-16 20:42:59 · 211 阅读 · 0 评论 -
【模板】带花树
存板子。UOJ79代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constusing std::cerr;using std::cout;cs int N=5e2+7,M=N*N*2;std::vector<int> G[N];int n,m,...原创 2019-09-07 23:23:59 · 159 阅读 · 0 评论 -
【模板】【洛谷5408】第一类斯特林数·行(倍增)(NTT)
传送门题解:首先我们设第一类斯特林数生成函数为Fn(x)=∑i=0nsn,ixi=xnˉF_n(x)=\sum_{i=0}^n s_{n,i}x^i=x^{\bar n}Fn(x)=∑i=0nsn,ixi=xnˉ则对于奇数的nnn,可以直接递归处理Fn−1F_{n-1}Fn−1,然后O(n)O(n)O(n)乘上一个一次多项式。对于偶数的nnn,可以处理出Fn/2F_{n/2}Fn...原创 2019-08-12 21:07:23 · 260 阅读 · 0 评论 -
【模板】【洛谷P5393】下降幂多项式转普通多项式(拉格朗日插值)(NTT)
传送门题解:首先对于下降幂多项式,其系数表达的点值EGF只需要乘上一个exe^xex。于是我们得到了若干个点值,直接份治拉格朗日插值即可。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constusing std::cerr;using std::cout...原创 2019-08-15 19:58:36 · 255 阅读 · 0 评论 -
【模板】【洛谷P5383】普通多项式转下降幂多项式(NTT)(多项式多点求值)
传送门题解:似乎并没有什么比较好的科技能够O(nlogn)O(n\log n)O(nlogn)求这个东西。那O(nlog2n)O(n\log^2 n)O(nlog2n)也不算太坏。我们知道如果得到了多项式的点值EGF,可以直接乘上一个e−xe^{-x}e−x得到下降幂形式的系数表达。所以直接套一个多点求值就行了,复杂度瓶颈也就在这里。代码:#include<bits/s...原创 2019-08-15 19:17:11 · 251 阅读 · 0 评论 -
【模板】BM算法
贴个板子,没有题解。其实构造线性递推式的做法真的挺简单,真正扯淡的是证明BM求出的确实是最短线性递推式。TMD为什么是最短,我也不会证,暂时只能感性理解。代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamesp...原创 2019-08-09 14:01:31 · 285 阅读 · 0 评论 -
【模板】【洛谷P5394】下降幂多项式乘法(NTT)
传送门题解:对于下降幂多项式f(x)f(x)f(x)考虑其点值生成函数:F(x)=∑i=0∞f(i)i!⋅xiF(x)=\sum_{i=0}^\infty\frac{f(i)}{i!}\cdot x^iF(x)=i=0∑∞i!f(i)⋅xi考虑一个下降幂单项式xn‾x^{\underline{n}}xn的点值生成函数:∑i=n∞i!(n−i)!i!xi=xnexp(x)\sum_...原创 2019-08-13 21:54:06 · 205 阅读 · 0 评论 -
【模板】【洛谷P5396】第二类斯特林数·列(倍增)(NTT)
传送门题解:考虑第二类斯特林数的列生成函数Fk(x)=∑i=kSi,kxiF_{k}(x)=\sum_{i=k}S_{i,k}x^iFk(x)=∑i=kSi,kxi根据递推式Sn,i=Sn−1,i−1+iSn−1,iS_{n,i}=S_{n-1,i-1}+iS_{n-1,i}Sn,i=Sn−1,i−1+iSn−1,i我们有Fk(x)=x1−kxFk−1(x)F_k(x)=\fr...原创 2019-08-13 21:22:00 · 215 阅读 · 0 评论 -
【模板】【洛谷P5395】第二类斯特林数·行(二项式反演)(NTT)
传送门题解:由幂转下降幂的式子:in=∑j=1nSn,jij‾i^n=\sum_{j=1}^nS_{n,j}i^{\underline{j}}in=j=1∑nSn,jij我们知道in=∑j=1iSn,jj!(ij)i^n=\sum_{j=1}^iS_{n,j}j!{i\choose j}in=j=1∑iSn,jj!(ji)其实上面的下标可以从000开始,直接二项式反演得到:...原创 2019-08-13 20:18:08 · 244 阅读 · 0 评论 -
【模板】【洛谷P5409】第一类斯特林数·列(多项式Exp)(多项式快速幂)
传送门题解:感觉求这个玩意的方法略迷,记录一下这个清奇的思路。考虑展开(1+x)t(1+x)^t(1+x)t(1+x)t=∑i=0∞(ti)xi=∑i=0∞xiti‾i!=∑i=0∞xii!∑j=0i[ij](−1)i−jtj=∑j=0∞tj∑i=j∞xii![ij](−1)i−j\begin{aligned}(1+x)^t&=&&\su...原创 2019-08-13 19:50:43 · 178 阅读 · 0 评论 -
【BZOJ1242】Fishing Net(弦图)(完美消除序列)(最大势)
传送门题解:利用最大势算法求出序列之后需要证明这个序列是否是完美消除序列。利用完美消除序列的定义:pip_ipi在{pi,pi+1,⋯pn}\{p_i,p_{i+1},\cdots p_n\}{pi,pi+1,⋯pn}的导出子图里面是一个单纯点。那么所有与pip_ipi相邻的点必须全部相邻。直接判断标号最小的那个点是否和剩下的全部相邻就行了。证明的话,CDQ论文里面有,自己...原创 2019-07-22 13:28:46 · 243 阅读 · 0 评论 -
【模板】Bluestein's algorithm 求循环卷积
例题:POJ2821解析:首先我们知道一般的,最常用的FFT求的就是在%2n\%2^n%2n意义下的循环卷积。换句话说,长度为nnn的DFTDFTDFT求的就是在长度%n\%n%n下的循环卷积。现在考虑长度不为222的整数次幂的时候我们怎么办。令长度为nnn,还是参考DFTDFTDFT的式子:Ak=∑i=0n−1aiωnikA_k=\sum\limits_{i=0}^{n-1}a_i\...原创 2019-06-16 14:46:31 · 1100 阅读 · 0 评论 -
2019.04.01【BZOJ2125】【洛谷P5326】【模板】静态仙人掌(圆方树)
BZOJ传送门洛谷传送门补档计划无题解代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ inline char get_char(){ static cs int Rlen=1&l...原创 2019-04-01 19:53:17 · 234 阅读 · 1 评论 -
【模板】Pollard-Rho分解质因数
参考题目:BZOJ3667解析:板子题解析看心情更新BB:在这份板子里面你看到的所有卡常痕迹都是为了那个毒瘤数据的洛谷版题(虽然最后还是没有过。。。)代码:#include&lt;bits/stdc++.h&gt;using namespace std;#define ll long long#define re register#define gc get_char#de...原创 2018-12-17 15:34:49 · 355 阅读 · 0 评论 -
【模板】【证明】任意模数下的二次剩余求解
什么是二次剩余问题就是求解形如x2≡a&amp;amp;nbsp;(mod&amp;amp;nbsp;p)x^2\equiv a \text{ } ( mod\text{ }p )x2≡a&amp;amp;nbsp;(mod&amp;amp;nbsp;p)的关于xxx的方程。下面从不同的模数开始分类讨论解决二次剩余问题的方法几个定义如果关于xxx的方程x2≡a&amp;amp;nbsp;(mod&原创 2018-12-22 09:42:48 · 7433 阅读 · 8 评论 -
【模板】最小费用最大流
参考题目:loj102洛谷P3381解析:以后会更新。另外,dijkstradijkstradijkstra+势的算法,我的代码要开O2O2O2才能过,而且比不开O2O2O2快了将近一倍(听说只有手写堆不会被卡)。如能帮忙卡一下常数,万分感激。代码(SPFASPFASPFA):#include<bits/stdc++.h>using namespace std;#...原创 2018-09-26 15:14:15 · 143 阅读 · 0 评论 -
【模板】线性基
参考题目:洛谷P3812解析:模板题题解从来看心情写系列~也许zxyoizxyoizxyoi做梦的时候会来更新这个模板。放心啦,早晚会更新的代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define re register#define gc getchar#define ...原创 2018-09-25 23:56:57 · 144 阅读 · 0 评论 -
【模板】最优比率环
参考题目:POJ3621解析:相信在看这篇文章的你一定会0/1分数规划。那么我的讲解就此开始。 首先,如同所有0/10/10/1分数规划,考虑二分。问题是这样的:考虑找出一个环使得∑F∑w∑F∑w\frac{\sum F}{\sum w}最大那么我们二分出的答案如何检验是否是合法的呢?设我们二分出的答案为λλ\lambda。若是最优解,则有λ=∑F∑wλ=∑F...原创 2018-09-14 21:09:45 · 420 阅读 · 0 评论 -
【模板】最优比率生成树
参考题目:POJ2728解析:就是套用01分数规划的两种方法,然后根据题目和数据规模选择用PrimPrimPrim还是KruskalKruskalKruskal算法求最大还是最小生成树就行了。显然这道题适合用PrimPrimPrim求最小生成树,毕竟是完全图。代码(二分):#include&amp;amp;lt;cstring&amp;amp;gt;#include&amp;amp;lt;queue&amp;a原创 2018-09-14 18:25:26 · 1217 阅读 · 0 评论