
算法小笔记
StarrYooSkY
Technology is not the best way
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
抄的 FFT 和 NTT 模板
洛谷P1919 :https://www.luogu.org/problem/P1919FFT :#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>const int N=1e6+10;const double Pi=acos(-1.0);st...原创 2019-10-10 16:40:16 · 229 阅读 · 0 评论 -
根据后序和中序遍历输出先序遍历
链接: https://pintia.cn/problem-sets/1097067173224390656/problems/1097067227884560393AC代码:#include <iostream>#include <cstring>using namespace std;int s1[35],s2[35],v[35],cnt=0,n;...原创 2019-02-20 14:48:20 · 871 阅读 · 0 评论 -
prim算法小笔记
#include #include #include using namespace std;const int MAX = 0x3f3f3f,INF = 0x3f3f3f3f;//MAX定义邻接矩阵的边界;INF定义一个无穷大的值,方便下面进行比较。int n,g[MAX][MAX],d[MAX];/*n代表网中点的个数,d[i]代表点i到当前树【可能只有一部分树】的距离:g[i][原创 2018-02-01 09:16:09 · 257 阅读 · 0 评论 -
区间 DP 环形取石子问题
链接: https://www.luogu.org/problemnew/show/P1880 经典区间DP问题AC代码:#include <bits/stdc++.h>using namespace std;#define mst(a,b) memset((a),(b),sizeof(a))#define rush() int T;scanf("%d",&am...原创 2019-01-23 15:07:39 · 209 阅读 · 0 评论 -
组合数 模板
当组合数要求范围不是很大时,我们可以直接数组打表算出void init(){ for(int i=0; i<=3000; i++){ c[i][0]=1; c[i][i]=1; for(int j=1; j<i; j++){ c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod; ...原创 2019-08-13 12:47:41 · 214 阅读 · 0 评论 -
中国剩余定理 扩展中国剩余定理 模板
中国剩余定理解线性同余线性方程/*long long gcd(LL a,LL b){ return b==0?a:gcd(b,a%b);}*/#include<bits/stdc++.h>#define ll long longconst int maxn=1e5+10;//扩展欧几里得算法 void gcd(ll a,ll b,ll &d,ll ...原创 2019-08-13 16:50:08 · 354 阅读 · 0 评论 -
矩阵快速幂 模板
根据牛客多校所写:https://ac.nowcoder.com/acm/contest/885/B#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1000100;const int NUM=2;//当前矩阵是几行几列的ll MOD;//取模char s[m...原创 2019-08-07 11:50:33 · 149 阅读 · 0 评论 -
求逆元的几种方法
Plus : 当a为正数时,无论n的正负,a%n结果一样 当a为负数时,a%n 的符合人的习惯的结果= a%n+n扩展欧几里得#include<bits/stdc++.h>using namespace std;int exgcd(int a,int b,int &x,int &y)//扩展欧几里得算法{ ...原创 2019-08-14 13:52:42 · 815 阅读 · 0 评论 -
卢卡斯定理 扩展卢卡斯定理 模板
卢卡斯定理 模板根据此题所写:https://www.luogu.org/problem/P3807由于此题求的是所以根据具体题意要作出相应的改变 (这个组合数的格式并不标准,但我看着比较顺眼)#include<iostream>#include<algorithm>#include<cstdio>#define ed 100005us...原创 2019-08-15 10:58:41 · 327 阅读 · 0 评论 -
类欧几里得算法 模板
这个算法和欧几里得并无直接联系,它是一个完完全全的新算法,我们省略推导过程,直接记录结论。首先,我们有如下定义: 注意:接下来出现的出发均为向下取整!对于上面这三个式子,我们分别有当a>=c or b>=c的时候,我们有当a<c and b<c的时候,我们有当a>=c or b&...原创 2019-08-20 16:47:25 · 397 阅读 · 0 评论 -
二次剩余定理 模板
某些坑已经挖好…随时回来填补勒让德符号:https://www.bk.gugeso.site/wiki/%E5%8B%92%E8%AE%A9%E5%BE%B7%E7%AC%A6%E5%8F%B7关于雅可比符号的介绍较少,大致意思就是,当p不为质数的时候,我们需要根据唯一分解定理把p分解成数个质数相乘,分别计算答案接下来 参考了这位大佬的博客(基本全抄)https...原创 2019-08-16 10:43:01 · 425 阅读 · 0 评论 -
判断组合数的奇偶性 卢卡斯定理
由卢卡斯定理可得 C(n,m)%2 = C(n/2,m/2) * C(n%2,m%2)% 2 (除法均为向下取整,且当m==0的时候不能再继续递归)C(1,1) = C(1,0) = C(0,0) = 1 C(0,1) = 0 C(X,0)=1所以最终经过递归一定会得到 C(X,0) * kC(1,1) * kC(1,0) * kC(0,0) * kC(0,1) (...原创 2019-01-19 17:41:42 · 876 阅读 · 0 评论 -
玄学的括号匹配问题
链接 : AC代码 :#include<bits/stdc++.h>using namespace std;typedef long long ll;int pos[2000009];stack<pair<int,int> >st;int main() { int n,m,q; cin>>n>>m>>...原创 2019-01-19 12:07:45 · 180 阅读 · 0 评论 -
P1052 升级的状压DP
链接: https://www.luogu.org/problemnew/show/P1052AC代码:#include<bits/stdc++.h>typedef long long ll;using namespace std;int stone[109],f[350000],dis[109];ll dp[350000];int main() { int ...原创 2019-01-18 18:46:05 · 177 阅读 · 0 评论 -
Dijkstra算法小笔记
#include #include #include #define MAX 1009#define INF 0x3f3f3f3fusing namespace std;int g[MAX][MAX],d[MAX],n,m;int vst[MAX];void Dijkstra(int x){//只能测量x到各点的最短路,如果想要测出 点m到点n 和 点x到点y 的最短路,需要两次原创 2018-02-01 10:15:29 · 220 阅读 · 0 评论 -
Kruskal算法小笔记
转一个大佬的并查集详解文章 : http://blog.youkuaiyun.com/the_best_man/article/details/62416938下面是自己的理解 : #include #include #include #include #include using namespace std;const int N = 0x3f3f3f3f;const int转载 2018-02-01 09:53:29 · 221 阅读 · 0 评论 -
Floyd算法小笔记
算法思想很简单,直接五行代码搞定: for(int k=0; k<n; k++){ for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ if(d[i][k]!=INF && d[k][j]!=INF && d[i][k]+d[k][j]<d[i][j]){ d[i][j原创 2018-02-01 10:28:12 · 175 阅读 · 0 评论 -
BFS求连通块
代码略繁杂,当时没有想到简化写法,也懒得改了。附上链接: https://vjudge.net/contest/208801#problem/H#include #include #include #include #include #include #include using namespace std;char a[101][101];int sum=0;vo原创 2018-02-01 10:46:42 · 849 阅读 · 0 评论 -
关于最大生成树的问题
本来适合最小生成树几乎一模一样的,但写的时候碰到了点小插曲,导致调试了好久才发现错误。写篇文章以后让自己注意下类似问题。因为和最小生成树很相像,就不再写注释了。附上链接 : https://vjudge.net/contest/210090#problem/G#include #include #include #define MAX 2001#define INF 0原创 2018-02-01 10:33:53 · 582 阅读 · 0 评论 -
依然是BFS
附上链接 : https://vjudge.net/contest/208801#problem/I#include #include #include #include #include #include #include using namespace std;int ans[10009]={0};int a[10001]={0},c[5],mm,nn;int原创 2018-02-01 10:47:27 · 185 阅读 · 0 评论 -
马走日 DP
附上题目链接:https://ac.nowcoder.com/acm/contest/301/F#include<iostream>#include<cstring>#include<cstdio>#include<queue>#define mod 1000000007using namespace std;long long ...原创 2018-12-02 14:03:18 · 241 阅读 · 0 评论 -
思维题 CF 1090 D
链接:http://codeforces.com/contest/1090/problem/D 题意:给定 n,mn,m,给定 mm 个无序对 (a,b)(a,b) 代表位置 aa 上的数字和位置 bb 上的数字进行比较。且这 mm 个无序对无重复。让你寻找两个序列,第一个序列由 1∼n1∼n 组成,元素互不相同且唯一。第二个序列,要满足和第一个序列对于 mm 个比较的结果相同,...原创 2018-12-12 18:51:05 · 198 阅读 · 0 评论 -
P1879 玉米田 基础状压DP
链接: https://www.luogu.org/problemnew/show/P1879AC代码:#include<bits/stdc++.h>const int mod = 100000000;typedef long long ll;using namespace std;int pos[15];int dp[13][5000];bool judg...原创 2019-01-18 10:10:06 · 309 阅读 · 0 评论 -
P1896 基础状压DP
链接: https://www.luogu.org/problemnew/show/P1896AC代码:#include<bits/stdc++.h>typedef long long ll;using namespace std;ll dp[12][(1<<9)+9][100];int cnt(int x){ int ans=0; for(int ...原创 2019-01-18 15:05:25 · 221 阅读 · 0 评论 -
BSGS算法 扩展BSGS算法 模板
BSGS算法 可以快速的求出,满足a^x ≡ b(mod p)的最小的非负整数x (p必须为质数,即 gcd(a,p) == 1)我们先将x拆分成i*m-j的形式(其中m为sqrt(p)向上取整的值,则原式化为 ≡ b (mod p) ) 显然 0<=j<m 1<=i<=m移向后得 ≡ b*(mod p)我们从 0-m 枚举 j,并将 ...原创 2019-08-16 15:43:49 · 533 阅读 · 1 评论