基础硬件
文章平均质量分 76
G·Dking
这个作者很懒,什么都没留下…
展开
-
dsu on tree
Dsu On Tree原创 2022-09-13 20:11:39 · 583 阅读 · 0 评论 -
斜率优化dp
斜率优化dp讲解原创 2022-08-12 19:15:15 · 305 阅读 · 0 评论 -
全网最详细的数论知识点汇总
带余除法与整除定义对于两个整数a,ba,ba,b,存在两个唯一的整数q,rq,rq,r满足:b=aq+r(0≤r<∣a∣)b=aq+r(0\leq r<|a|)b=aq+r(0≤r<∣a∣)当r=0r=0r=0时,我们称aaa整除bbb,记作a∣ba|ba∣b性质a∣b,b∣c,gcd(a,b)=1→ab∣ca|b,b|c,gcd(a,b)=1→ab|ca∣b,b∣c,gcd(a,b)=1→ab∣ca∣bc,gcd(a,b)=1→a∣ca|bc,gcd(a,b)=1→a|ca原创 2022-02-04 20:02:09 · 1473 阅读 · 0 评论 -
提高组数据结构(更新中)
栈栈是一种先进后出的数据结构,结合到现实中的模型就为一个电梯,最先进电梯的人总是最后出电梯栈的基本实现在STL中,有专门的实现栈的数据结构定义为stack,可执行进栈,出栈,查询栈顶元素,判断栈顶是否为空,查询栈中元素数目的操作,执行这些操作的复杂度均为O(1)O(1)O(1)code#include<bits/stdc++.h>using namespace std;int main(){ stack<int> s;//定义栈,<>中的是栈中元素的原创 2021-06-18 21:31:30 · 299 阅读 · 2 评论 -
图论(更新中)
最短路建图邻接矩阵这个东西就非常的easy,只需要用一个二维数组fx,yf_{x,y}fx,y 表示xxx和yyy之间的距离上升到几何层面,就是建立了一个二维的n∗nn*nn∗n的矩阵,每个点表示从下标为它xxx坐标的点,到下表为它yyy坐标点之间的距离即可好的方面在于它存边的过程非常简易,当nnn的数据范围小的时候用起来会很方便弊端就在于非常浪费空间,当nnn的大小上升到100001000010000以上,就会出现MLEcode cin>>x>>y>>原创 2021-05-26 13:28:52 · 371 阅读 · 3 评论 -
数学知识汇总
质数定义质数的定义为:一个数除了1和它自身以外无其他因数,这个数就为质数,否则即为合数(1既不是质数也不是合数)质数的判定质数的判定是一个很基础的东西,顾名思义,就是给定一个数字,判断它是不是质数那么如何解决这个问题呢,就需要一个非常简单的算法——试除法(在后面将经常出现)根据定义,我们只需要枚举2−n2-n2−n-111 之中是否存在nnn的因数,如果存在,这个数即为质数,否则为合数codebool Pan(int x){ if(x==1) return 0;//对1进行特殊处理 f原创 2021-04-26 11:37:31 · 379 阅读 · 0 评论 -
最大公约数
定义:如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数。整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。同理:几个自然数公有的倍数,叫做这几个数的公倍数,其中最小的一个自然数,叫做这几个数的最小公倍数。定理:gcd(a,b)∗lcm(a,b)=a∗bgcd(a,b)*lcm(a,b)=a*bgcd(a,b)∗lcm(a,b)=a∗b证明: 设d=gcd(a,b),a0=a/d,b0=b/dd=gcd(a,b),a_0=a/d,b_0=b/dd=gcd(a原创 2021-04-13 19:15:10 · 107 阅读 · 0 评论 -
算术基本定理及其推论
算术基本定理:任何一个大于1的正整数都能唯一分解为有限个质数的乘积,可写作N=p1c1p2c2…pmcmN=p_1^{c_1}p_2^{c_2}\dots p_m^{c_m}N=p1c1p2c2…pmcm其中cic_ici都是正整数,pip_ipi都是质数,且满足p1<p2<⋯<pmp_1<p_2<\dots <p_mp1<p2<⋯<pm算术基本定理的推论:NNN的正约数个数为:(c1+1)∗(c2+1)∗…(cm+1)原创 2021-04-13 18:16:37 · 667 阅读 · 0 评论 -
质数的判定
质数的判定是一个很基础的东西,顾名思义,就是给定一个数字,判断它是不是质数首先质数的定义为:一个数除了1和它自身以外无其他因数,这个数就为质数,否则即为合数(1既不是质数也不是合数)那么如何解决这个问题呢,就需要一个非常简单的算法——试除法(在后面将经常出现)根据定义,我们只需要枚举2−n2-n2−n-111 之中是否存在nnn的因数,如果存在,这个数即为质数,否则为合数codebool Pan(int x){ if(x==1) return 0;//对1进行特殊处理 for(int i=2原创 2021-04-12 13:09:24 · 397 阅读 · 0 评论 -
欧拉函数
定义:1-n中与n互质的数的个数被称为欧拉函数,记作φ(n)φ(n)φ(n)欧拉函数的性质:1.∀n>1\forall n>1∀n>1,1−n1-n1−n中与n互质的数的和为n∗φ(n)/2n*φ(n)/2n∗φ(n)/22.若a,ba,ba,b互质,则φ(ab)=φ(a)φ(b)φ(ab)=φ(a)φ(b)φ(ab)=φ(a)φ(b)3.若fff是积性函数,且在算术基本定理中n=∏i=1mpicin=\prod_{i = 1}^{m}p_i^{c_i}n=∏i=1mpici原创 2021-03-03 19:44:52 · 98 阅读 · 1 评论 -
约数个数定理
将nnn分解成质因子相乘的结果,即n=p1c1p2c2…pmcmn=p_1^{c_1}p_2^{c_2}\dots p_m^{c_m}n=p1c1p2c2…pmcm,则nnn的正约数的个数为:(c1+1)×(c2+1)×⋯×(cm+1)=∏i=1m(ci+1)(c_1+1)\times(c_2+1)\times\dots\times (c_m+1)=\prod_{i = 1}^{m}(c_i+1)(c1+1)×(c2+1)×⋯×(cm+1)=∏i=1m(ci+1)证明:由约数定义可知原创 2021-03-02 13:25:56 · 311 阅读 · 0 评论 -
统计正约数
求1−n1-n1−n中每个数的正约数集合试除法O(n×n)O(n\times \sqrt n)O(n×n)首先简化问题,如何求一个数n的正约数集合?最暴力的方法就是枚举1−n1-\sqrt n1−n的每一个数判断这个数是不是nnn的约数,如果是,那么iii和n/in/in/i就都是n的约数要特判一种情况,如果i=n/ii=n/ii=n/i,那么iii和n/in/in/i只统计一次将1−n1-n1−n的每一个数都按这种方式拆分即可code#include<bits/stdc++.h&原创 2021-03-01 14:02:24 · 317 阅读 · 0 评论 -
质数的筛选
求nnn以内所有的质数!试除法O(n×n)O(n \times \sqrt n)O(n×n)非常裸的一个算法,也是时间复杂度最高的算法扫描2−x2- \sqrt x2−x的所有整数,如果xxx除以这个整数不存在余数,即xxx%i==0i==0i==0,则代表xxx有除111和自身以外的其他因数,所以xxx就不是一个质数,如果扫描完后没有任何一个iii可以使xxx%i==0i==0i==0,xxx就是一个合数。只扫描到x\sqrt xx的原因是,对于任意一个因数iii来说, x/ix/ix/i也原创 2021-03-01 13:15:46 · 242 阅读 · 0 评论 -
质因数分解
在0x31 T1中提到过算术基本定理,即任意一个大于111的正整数都能唯一分解为有限个质数的乘积所以可以使用试除法O(n)O(\sqrt n)O(n)来实现质因数分解操作很简单,从最小的质数222开始,一直到n\sqrt nn,只要可以整除当前的数,就一直除以这个数,直到不能整除。For example:初始的nnn为120120120,i从222循环到n\sqrt nnnnn可以整除222,此时n=60n=60n=60nnn可以整除222,此时n=30n=30n=30nnn可以整除22原创 2021-03-01 13:02:35 · 1746 阅读 · 0 评论