![](https://img-blog.csdnimg.cn/20210918210950999.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
《ACM模板》
文章平均质量分 69
【ACM模板】
繁凡さん
只想当个小透明,就图一乐^q^,希望可以做出一些微小的贡献(目前研究方向:自然语言处理、深度学习中的对抗攻击、元学习,欢迎大佬们来与我交流^0^)
展开
-
细节决定成败(竞赛错题经验总结)
持续更新的竞赛错题经验总结原创 2020-06-03 16:59:23 · 2352 阅读 · 3 评论 -
繁凡的ACM模板(满注释模板)
ACM模板,不同于其他大佬的是我这个模板是满注释的!哪怕是小白的你考场上都能快速上手算法,每一句都有注释帮你快速理解,方便对模板根据题意的修改原创 2020-04-13 22:00:52 · 39461 阅读 · 28 评论 -
繁凡的 ACM 退役记(一名普通算法竞赛选手与博主的竞赛生涯回忆录)凡是过往,皆为序章
你好呀,我是繁凡!这里是一名双非 ACM 弱校的零基础菜鸡算法竞赛选手与博主的竞赛生涯回忆录。原创 2022-01-01 23:09:01 · 27636 阅读 · 99 评论 -
ICPC / CCPC / Codeforces / AtCoder 单词本
过不了六级的小菜鸡呜呜呜,好久没有背过单词了,都忘完了放一些写ICPC真题 / CCPC真题 / Codeforces / AtCoder 的时候不能立刻反应过来的单词每天背一下原创 2021-02-18 15:59:23 · 2027 阅读 · 0 评论 -
《线性代数》概念定理大全!
持续更新中hhh第一章 矩阵与行列式第二章 向量第三章原创 2021-01-10 22:43:07 · 5194 阅读 · 1 评论 -
【学习笔记】超简单的多项式快速幂
整理的算法模板合集: ACM模板目录P5245 【模板】多项式快速幂点我看多项式全家桶(●^◡_◡◡^●)我们知道指数有一个性质:lnxn=n lnxlnx^n=n\ lnxlnxn=n lnx我们要求的是f(x)kf(x)^kf(x)k可以很自然地构造出:f(x)k=elnf(x)k=ek lnf(x)f(x)^k=e^{lnf(x)^k}=e^{k\ lnf(x)}f(x)k=elnf(x)k=ek lnf(x)所以我们只需要求f(x)f(x)原创 2021-01-03 11:20:58 · 1585 阅读 · 0 评论 -
【学习笔记】超简单的多项式除法(含完整证明)
整理的算法模板合集: ACM模板目录多项式除法P4512 【模板】多项式除法点我看多项式全家桶(●^◡_◡◡^●)多项式除法P4512 【模板】多项式除法P4512 【模板】多项式除法按照上述思路简单实现一下就行了(待更…...原创 2021-01-02 23:37:10 · 2945 阅读 · 3 评论 -
【学习笔记】超简单的多项式求指(含泰勒展开式、牛顿迭代完成证明)
整理的算法模板合集: ACM模板目录多项式求指泰勒展开式牛顿迭代牛顿迭代应用P4726 【模板】多项式指数函数(多项式 exp)点我看多项式全家桶(●^◡_◡◡^●)多项式求指泰勒展开式牛顿迭代牛顿迭代应用牛顿迭代yyds,只用三行就完成了我一页纸的证明!P4726 【模板】多项式指数函数(多项式 exp)直接套上面的公式就行了,需要用到 多项式对数代码超难写的,待更…...原创 2021-01-02 23:30:33 · 1140 阅读 · 0 评论 -
【学习笔记】超简单的多项式开方
整理的算法模板合集: ACM模板目录P5205 【模板】多项式开根点我看多项式全家桶(●^◡_◡◡^●)P5205 【模板】多项式开根#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;typedef long long ll;const int N原创 2021-01-01 19:18:23 · 1244 阅读 · 0 评论 -
【学习笔记】超简单的多项式对数(多项式求导 + 积分)
整理的算法模板合集: ACM模板目录多项式对数P4725 【模板】多项式对数函数(多项式 ln)点我看多项式全家桶(●^◡_◡◡^●)多项式对数其实非常简单,就是直接求导再积分即可。P4725 【模板】多项式对数函数(多项式 ln)直接简单实现一下就行了。我们输入多项式 fff ,先求fff的导数 AAA ,fff 的逆元 BBB,然后把他们乘起来(NTTNTTNTT),最后求积分 ggg 既是答案,输出即可。至于求导和积分,因为我们的多项式f(x)=a0+a1×x+a2×x2…an原创 2021-01-01 17:15:13 · 3030 阅读 · 0 评论 -
【学习笔记】超简单的多项式求逆(含全套证明)
整理的算法模板合集: ACM模板目录多项式求逆一、分治FFT二、倍增法及其证明三、多项式求逆例题[P4238 【模板】多项式乘法逆](https://www.luogu.com.cn/problem/P4238)点我看多项式全家桶(●^◡_◡◡^●)多项式求逆一、分治FFT二、倍增法及其证明三、多项式求逆例题P4238 【模板】多项式乘法逆直接按照上述的思路实现一下模板即可。注意要中间 h(x)h(x)h(x) 要取的是模 x⌈n⌉2x^{\frac{\lceil n \rceil}原创 2020-12-30 12:23:25 · 3249 阅读 · 0 评论 -
【学习笔记】多项式全家桶(包含全套证明)
目录0x00.多项式基本概述0x01.多项式的基础概念0x02. 多项式的度0x03. 多项式的乘法0x04. 多项式的逆元0x10.拉格朗日插值0x20.多项式乘法0x21.快速傅里叶变换(FFT)0x22.快速数论变换(NTT)0x23.快速沃尔什变换(FWT)0x24.快速莫比乌斯变换(FMT)0x30.多项式求逆0x40.多项式开方0x50.多项式除法 / 取模0x60.多项式牛顿迭代0x70.多项式多点求值 / 快速插值0x80.多项式三角函数0x90.多项式反...原创 2020-12-29 17:51:21 · 14738 阅读 · 8 评论 -
【学习笔记】超简单的快速傅里叶变换(FFT)(含全套证明)
整理的算法模板合集: ACM模板目录多项式复数复数的单位根 / 单位向量离散傅里叶变换(DTF)离散傅里叶逆变换(IDTF)FFT算法整体流程代码实现递归版迭代版“三步变两步”优化P1919 【模板】FFT快速傅里叶变换学习笔记(用ipad记录的笔记):超级简单的快速傅里叶变换!只要基础够扎实,顺着推一遍没有什么难以理解的,我学的整个过程没有一点卡壳,真的很爽,整整写了三个小时,写了满满6页的笔记。主要是内容太多了。首先是一些基础概念:多项式复数复数的单位根 / 单位向量离散傅里叶变原创 2020-12-25 22:30:26 · 11093 阅读 · 12 评论 -
模板 - 快速求n所有因数(快于暴力sqrt(n) )
整理的算法模板合集: ACM模板P1072 Hankson 的趣味题题目大意:已知正整数a0,a1,b0,b1a_0,a_1,b_0,b_1a0,a1,b0,b1 ,设某未知正整数 xxx 满足:1. xxx 和 a0a_0a0的最大公约数是 a1a_1a1 ;2. xxx 和 b0b_0b0 的最小公倍数是 b1b_1b1求满足条件的xxx的个数。优化做法可以在O(nlog n)O(\frac{\sqrt{n}}{log\ n})O(log nn)的原创 2020-12-10 22:15:06 · 1817 阅读 · 0 评论 -
模板 - 莫比乌斯反演(常用技巧)
整理的算法模板合集: ACM模板目录莫比乌斯反演常用技巧经典模板例题莫比乌斯反演莫比乌斯函数:μ(n)={1n=1(−1)kn=p1p2p3…pk,k为n的本质不同的质因子的个数0其他情况n含有平方因子\mu(n) = \left\{ \begin{matrix} 1 & n=1\\ (-1)^k & n = p_1p_2p_3\dots p_k,k为n的本质不同的质因子的个数\\ 0 & \text{其他情况n含有平方因子} \end{m原创 2020-12-09 21:02:22 · 907 阅读 · 1 评论 -
【算法笔记】莫队算法(基础莫队,带修莫队,回滚莫队,树上莫队,二次离线莫队)
来这里学习莫队以及神奇的证明:莫队算法 --算法竞赛专题解析(26)我们首先考虑双指针的暴力法,发现很容易就会被卡成O(nm)O(nm)O(nm),这时候我们的莫队出现了,莫队说,我可以像变魔术一样,把O(nm)O(nm)O(nm)的算法通过一个神奇的排序方式,使得我们最坏的情况下,时间复杂度也会非常优秀:O(nn)O(n\sqrt{n})O(nn)。莫队算法是一个离线的算法,我们先将所有的询问全部存下来,然后排序。我们的每一个询问都是一个左右区间,(l,r)(l ,r)(l,r)我们的排序方法为双原创 2020-11-23 22:38:47 · 6604 阅读 · 4 评论 -
树hash - 树的同构
P5043 【模板】树同构([BJOI2015]树的同构)fx=1+∑y∈sonxfy×prime(sizey)f_x = 1 + \sum_{y\in son_x}{f_y \times prime(size_y)}fx=1+y∈sonx∑fy×prime(sizey)gx=gfa−fx∗prime(sizex)+fxg_x = g_{fa} - f_x * prime(size_x) + f_xgx=gfa−fx∗prime(sizex)+fx其中:fxf_xfx 表示原创 2020-11-21 22:40:54 · 506 阅读 · 0 评论 -
模板 - O(n)预处理,O(1)查询gcd
void init_gcd(){ notprime[1]=1; int i,j,d; for(i=2;i<N;i++){ if(!notprime[i]){ prime[++cnt]=i; p[i]=i; } for(j=1;j<=cnt;j++){ if((LL)prime[j]*i>=N) break; d=prime[j]*i; notprime[d]=1; p[d]=prime[j]; if(i%prime[j]==0)原创 2020-11-21 17:29:20 · 811 阅读 · 0 评论 -
OI模板大全(普及~省选NOI)
hhh刚从某位大佬的洛谷首页偷到了一个好玩的东西自己对照了一下原来我还有这么多东西没有学呜呜呜我好菜原创 2020-11-07 18:13:09 · 1557 阅读 · 2 评论 -
判断一个图是否为树(有向图以及无向图)
http://www.cppblog.com/fm369o802340/archive/2012/12/10/196151.html判断一个图是否为树1. 无向图(hdu 1272 小希的迷宫)2. 有向图(hdu 1325 Is It A Tree?)题目大意:判断一个有向图是不是一棵树判断条件:无环,一个根节点,(只有一个入度为0的结点,不存在入度大于1的结点)#include<iostream>#include<algorithm>#include<cst原创 2020-11-06 21:09:10 · 5276 阅读 · 0 评论 -
【算法笔记】分块
之前一直不是很喜欢分块所以没学,现在看来分块这种暴力的艺术倒还是很适合我的…分块——暴力的艺术分块算法的思想是通过适当的划分,预处理一部分信息保存下来,用空间换取时间,达到时空平衡。基本操作是,将一段序列,分成一定数量的块,每一块有一个长度,表示一段区间。对于区间操作,通过对完整块的整体操作和对不完整块的暴力操作而使复杂度尽可能的低为了使得其有着最稳定的时间复杂度,我们经常将一个长度为 n 的序列分为 n\sqrt nn 个大小为 n\sqrt nn 的块,如果 n 不是完全平方数,则序列最右端原创 2020-11-04 21:08:52 · 1226 阅读 · 0 评论 -
最短路模板合集
最短路模板合集原创 2020-06-03 10:41:52 · 1585 阅读 · 0 评论 -
【算法笔记】树链剖分
树链剖分原创 2020-10-21 21:33:41 · 367 阅读 · 0 评论 -
欧几里得算法与唯一分解定理
整理的算法模板合集: ACM模板目录最大公约数与最大公倍数唯一分解定理最大公约数与最大公倍数最多O(logn)O(logn)O(logn)int gcd(int a, int b){ return b == 0 ? a : gcd(b, a % b);}int lcm(int a,int b){ return a / gcd(a,b) * b;//先除后乘,以免溢出}唯一分解定理每一个大于1的正整数n都可以唯一地写成素数的乘积,在乘积中的素因子按照非降序排列,正整数n的分解原创 2020-10-18 20:30:41 · 690 阅读 · 0 评论 -
【算法笔记】竞赛图(有向完全图)(相关题型总结)
竞赛图(有向完全图)竞赛图也叫有向完全图。每对顶点之间都有一条边相连的有向图称为竞赛图竞赛图的一些简单的性质:竞赛图没有自环,没有二元环;若竞赛图存在环,则一定存在三元环。(如果存在一个环大于三元,那么一定存在另一个三元的小环。)任意竞赛图都有哈密顿路径(经过每个点一次的路径,不要求回到出发点)。图存在哈密顿回路的充要条件是强联通。哈密顿问题中,对于 n 阶竞赛图,当 n 大于等于 2 时一定存在哈密顿通路设 D 为 n 阶有向简单图,若 D 的基图为 n 阶无向完全图,则 D 为 n 阶原创 2020-10-09 17:08:22 · 10506 阅读 · 3 评论 -
【算法笔记】哈密顿问题
哈密顿问题基本概念哈密尔顿通路:经过图中每个结点且仅经过一次的通路。哈密尔顿回路:经过图中每个结点且仅经过一次的回路。哈密尔顿图:存在哈密尔顿回路的图。竞赛图:每对顶点之间都有一条边相连的有向图,n 个顶点的竞赛图称为 n 阶竞赛图。与欧拉回路的对比:欧拉回路是指不重复地走过所有路径的回路;哈密尔顿回路是指不重复地走过所有点并且最后回到起点的回路。1.哈密尔顿通路的判定设一无向图有 n 个顶点,u、v 为图中任意不相邻的两点,deg(x) 代表 x 的度数若 成立,则图中存在哈密尔顿通转载 2020-10-09 17:06:18 · 5587 阅读 · 0 评论 -
【算法笔记】二分图最大权匹配 - KM算法(dfs版O(n4) + bfs版O(n3))
匈牙利算法又称为 KM 算法,可以在 O(n3)O(n^3)O(n3) 时间内求出二分图的 最大权完美匹配 。考虑到二分图中两个集合中的点并不总是相同,为了能应用 KM 算法解决二分图的最大权匹配,需要先作如下处理:将两个集合中点数比较少的补点,使得两边点数相同,再将不存在的边权重设为 0,这种情况下,问题就转换成求最大权完美匹配问题 ,从而能应用 KM\tt KMKM 算法求解。其实就是普通的匈牙利算法求二分图最大匹配的拓展版本顶标:两边点都有的标记(左 aia_iai右 bjb_jbj)满原创 2020-10-09 12:28:49 · 1098 阅读 · 1 评论 -
模板 - Min_25 筛法求素数和
不能算是Min_25筛,该模板只是在较短时间内求1e11~1e12内的素数和#include <bits/stdc++.h>#define ll long longusing namespace std;const int N = 1000010;int prime[N], id1[N], id2[N], flag[N], ncnt, m;ll g[N], sum[N], a[N], T;ll n;int ID(ll x) { return x <= T ? i.转载 2020-10-07 15:30:24 · 1152 阅读 · 3 评论 -
模板 - 最长上升子序列与最长公共子序列
整理的算法模板合集: ACM模板目录1.最长上升子序列(LIS)1.1树状数组优化O(nlogn)O(nlogn)O(nlogn)2.最长公共子序列(LCS)2.1转换成LIS优化O(nlogn)O(nlogn)O(nlogn)1.最长上升子序列(LIS)给出一个⻓度为n的数字序列ai{ai}ai,我们需要找到一个最⻓的子序列, 使得子序列中的数字大小单调递增。 例如:n=5n = 5n=5,原序列为(1,4,2,3,5)(1,4,2,3,5)(1,4,2,3,5),那么我们选择(1,2,3,5)(原创 2020-10-05 11:29:28 · 2928 阅读 · 2 评论 -
模板 - 数论
一:【质数】1.【暴力判】【模板】素数、コンテスト、素数 [AT807]#include<cstdio>#include<cmath>int x;inline bool judge(int n){ if(n<4)return 1; if(n%2==0)return 0; int half=sqrt(n); for(int i=3;i<=half;i+=2) if(n%i==0)return 0; retu转载 2020-10-04 11:59:43 · 400 阅读 · 5 评论 -
模板 - 最小斯坦纳树
一个有权的无向图上有k个关键点,求联通k个关键点最小的代价。答案的子图一定是树。时间复杂度:O(n×3k+mlogm×2k)O(n\times 3^k+m\log m\times 2^k)O(n×3k+mlogm×2k)#include <bits/stdc++.h>using namespace std;const int MAXN=510;int n,m,k,x,y,z,eg,p[MAXN],hd[MAXN],ver[2*MAXN],vis[MAXN],nx[2*MAXN],.原创 2020-10-04 10:39:06 · 839 阅读 · 3 评论 -
模板 - DP动态规划
一:【背包】1.【01背包】#include<algorithm>#include<cstdio>int T,n,i,j,v[110],w[110],f[1010];int main(){ scanf("%d%d",&T,&n); for(i=1;i<=n;i++)scanf("%d%d",&v[i],&w[i]); for(i=1;i<=n;i++) for(j=T;j>=v[i];转载 2020-10-04 09:59:41 · 861 阅读 · 0 评论 -
三维几何基础大合集(三维点积叉积、点线面、凸包)《计算几何全家桶(三)》
整理的算法模板合集: ACM模板目录原创 2020-10-03 21:40:40 · 2568 阅读 · 1 评论 -
模板 - 上下界网络流
整理的算法模板合集: ACM模板目录无源汇上下界可行流有源汇上下界最大流有源汇上下界最小流无源汇上下界可行流/* 首先建立一个源S和一个汇T,一般称为附加源和附加汇。 对于图中的每条弧<u,v>,假设它容量上界为c,下界b,那么把这条边拆为三条只有上界的弧。 一条为<S,v>,容量为b; 一条为<u,T>,容量为b; 一条为<u,v>,容量为c-b。 其中前两条弧一般称为附加弧。 然后对这张图跑最大流,原创 2020-10-03 17:03:10 · 237 阅读 · 0 评论 -
二维几何常用算法合集(平面扫描、凸包、旋转卡壳、半平面交、平面区域、平面最近点对)《计算几何全家桶(二)》
整理的算法模板合集: ACM模板目录1.平面扫描2.凸包Andrew算法直线两点式转为一般式使用公式O(1)计算点到直线距离3.半平面交4.平面区域1.平面扫描平面扫描是用来降低算法的复杂度的方法,通过扫描线在平面上按照给定的轨迹移动的同时,不断根据扫描线扫过的部分更新信息,从而得到整体所要求的结果,既可以从左向右平移与y轴平行的直线,也可以固定射线的端点逆时针转动。平面上有N NN个两两没有公共点的圆,i ii号圆的圆心在(xi,yi)(x_i,y_i)(xi,yi),半径为rir_iri原创 2020-10-02 21:45:42 · 4136 阅读 · 3 评论 -
模板 - 计算几何相关公式大全
一、注意事项注意舍入方式(0.5的舍入方向);防止输出-0.几何题注意多测试不对称数据.整数几何注意xmult和dmult是否会出界; 符点几何注意eps的使用.避免使用斜率;注意除数是否会为0.公式一定要化简后再代入.判断同一个2∗PI2*PI2∗PI域内两角度差应该是abs(a1−a2)<beta∣∣abs(a1−a2)>pi+pi−beta;abs(a1-a2)<beta||abs(a1-a2)>pi+pi-beta;abs(a1−a2)<beta∣∣原创 2020-09-29 21:02:24 · 972 阅读 · 0 评论 -
模板 - 单调队列
整理的算法模板合集: ACM模板目录单调队列单调队列求矩阵的和单调队列/*常见模型:找出滑动窗口中的最大值/最小值*/int hh = 0, tt = -1;for (int i = 0; i < n; i ++ ){ while (hh <= tt && check_out(q[hh])) hh ++ ; // 判断队头是否滑出窗口 while (hh <= tt && check(q[tt], i)) tt -- ;原创 2020-09-28 16:55:16 · 138 阅读 · 0 评论 -
模板 -计算几何注意事项
整理的算法模板合集: ACM模板目录计算误差解决方案 : 误差判别法解决方案:化浮为整注意负零注意反三角函数的值域计算几何常用开头模板计算误差尽量少用三角函数、除法、开方、求幂、取对数运算如:1.0/2.0∗3.0/4.0∗5.0=(1.0∗3.0∗5.0)/(2.0∗4.0)1.0/2.0*3.0/4.0*5.0 = (1.0*3.0*5.0)/(2.0*4.0)1.0/2.0∗3.0/4.0∗5.0=(1.0∗3.0∗5.0)/(2.0∗4.0)在不溢出的情况下将除式比较转化为乘式比较a原创 2020-09-28 16:29:16 · 741 阅读 · 0 评论 -
模板 - 输入输出优化
整理的算法模板合集: ACM模板一些数据比较大的题,如果没有一个令人满意的时间复杂度的算法的话,还是加上这二位吧,说不定运气好就卡过了呢。inline int read(){ int re=0,k=1;char ch=getchar(); while(ch>'9'||ch<'0'){if(ch=='-')k=-1;ch=getchar();} while(ch<='9'&&ch>='0'){re=re*10+ch-48;ch=getchar();} r原创 2020-09-28 16:03:20 · 953 阅读 · 3 评论 -
二维几何基础大合集!《计算几何全家桶(一)》(基础运算、点、线、多边形、圆、网格)
整理的算法模板合集: ACM模板目录基本运算点与直线多边形基本运算#include<bits/stdc++.h>using namespace std;const int N = 5007, M = 50007, INF = 0x3f3f3f3f;const double DINF = 12345678910, eps = 1e-10;struct Point{ double x, y; Point(double x = 0, double y = 0):x(x原创 2020-09-27 19:18:50 · 6433 阅读 · 8 评论