算法与数据结构
小记算法竞赛学习中的各种知识点,作博客以记录。
Sloar_Nova
学生党一枚 在努力入门编程中
展开
-
算法学习——整数分块
整数分块的介绍原创 2022-06-12 15:46:51 · 415 阅读 · 1 评论 -
算法竞赛—乘法逆元
乘法逆元定义:对于正整数aaa,存在至少一个xxx使得ax≡1mod pax\equiv1\mod pax≡1modp ,则称所有满足以上条件的xxx均为aaa在模ppp意义下的乘法逆元,一般记作a−1a^{-1}a−1。用扩展欧几里得算法求逆元本质是求线性同余方程ax≡1mod pax\equiv1 \mod pax≡1modp的解xxx。上式可变形为ax+py=1(x,y∈N)ax+py=1(x,y \in N)ax+py=1(x,y∈N),由裴蜀定理可知,gcd(a,p)=1gcd(a,原创 2022-01-30 14:49:57 · 506 阅读 · 0 评论 -
算法竞赛—欧拉筛素数(线性筛)
int n;//求1 ~ n之间的素数int prime[N],cnt;//prime数组存放素数 cnt为prime的长度int st[N];//数字i是否为素数void euler(){ for(int i=2;i<=n;i++){ if(!st[i]){ prime[++cnt]=i; } for(int j=1;j<=cnt&&prime[j]<=n/i;j++){ st[i*prime[j]]=1; if(i%prime[原创 2022-01-30 14:23:33 · 847 阅读 · 0 评论 -
算法竞赛——并查集
并查集功能:1.快速合并集合 2.快速查找两个元素是否在同一个集合内 (时间复杂度均为log(n)log(n)log(n))int par[N],cnt[N]; //储存节点N的父节点 特别规定根节点的父节点是其本身 void init(){ //初始化:令每个节点的父节点为其自身 即初始时每个节点自成一个集合 for(int i=1;i<=N;i++){ par[i]=i; cnt[i]=1; } return ;}void unit(int x,int y){ par[f原创 2022-01-22 15:37:21 · 274 阅读 · 0 评论 -
算法竞赛—KMP字符串匹配算法
拖延症晚期的笔者时隔N天来发第二篇blog了。其实笔者在此期间很多次都想将每个学到的新算法都写篇blog,然而笔者发现如果每篇都要很精细、将每条论述每条逻辑表达得十分清晰的话,那笔者码blog的时间的可能会过于消耗业余时间了,并且也没有想动手的动力了。于是乎,从今往后(如果这篇之后还有续章的话),会尽量减少文字量,仅保留主要代码及必要注释。(若有幸有读者观看并对某处有疑惑,可以在评论区留言或者私信)KMP算法——从S1字符串中快速寻找所有S2子串例:S1字符串为ABABABC,目标子串S2为ABA,则原创 2022-01-16 20:23:40 · 378 阅读 · 0 评论 -
算法竞赛—快速幂
快速幂算法学习原创 2021-12-18 13:13:52 · 262 阅读 · 0 评论