![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模板
为君倾此杯
这个作者很懒,什么都没留下…
展开
-
求C(n,m)
1、组合数与杨辉三角有对应关系:#include <iostream>#include <math.h>using namespace std;const int maxn=1e6+20;const int mod=1e9+7;typedef long long ll;ll C[1005][1005];void getC(int n){ for(int i=0;i<=n;i++) { for(int j=0;j<=i;原创 2020-11-28 23:30:22 · 774 阅读 · 0 评论 -
最近公共祖先(LCA)
题目链接题意:求树中两个节点的最近公共祖先。一、先深搜记录每个结点的父亲节点。先将两个节点中的一个节点往上遍历(寻找父亲节点)直到源节点,并标记遍历过的节点,再遍历另一个节点,若遇到的节点已经遍历过,说明该节点为最近公共祖先。#include <iostream>#include <vector>#include <cstring>using namespace std;const int maxn=1e5+10;int n,m,s;int p[m原创 2020-11-09 21:49:58 · 225 阅读 · 0 评论 -
数列区间最大值(st表、倍增)
题目链接题意:求区间最大值。log(n)/log(k):表示k的多少次方为n。st [ i ][ j ]:表示从i开始往后2^j以内最大的数。st [ i ][ 0 ]:表示从i开始往后2^0=1以内最大的数,只有一个数即为a[i];f(l,r):k=log(r-l+1)/log(2);st [ l ][ k ]:从l开始往后2^k以内最大的数。st[r-(1<<k)+1][k]:从r开始往前2^k以内最大的数。#include <iostream>#include原创 2020-11-09 21:37:20 · 515 阅读 · 0 评论 -
约瑟夫环问题
题目链接约瑟夫环问题:一圈共有N个人,开始报数,报到M的人自杀,然后重新开始报数,问最后自杀的人是谁?模拟整个过程,复杂度为O(NM)。用数学方法来求解:例如:15 66, 12, 3, 10, 2, 11, 5, 15, 13, 9, 14, 4, 1, 8, 7.当只有一个人的时候,数组中只有一个人,所以下次一定是下标为0的人出列,即F(1)=0。当有2个人的时候(N=2),因为要报到M的人自杀,所以应该从上一次的下标开始的第M个的人自杀,即F(2)=F(1)+M递推公式:F(i)=F原创 2020-11-01 13:23:44 · 98 阅读 · 0 评论 -
矩阵快速幂与斐波那契
题目链接视频讲解好像没有可以完全通过的代码。。。斐波那契和矩阵的关系:#include <bits/stdc++.h>using namespace std;typedef long long ll;vector<vector<ll> > mat_mul(vector<vector<ll> > a,vector<vector<ll> > b){ int ra = a.size(), ca =原创 2020-09-09 18:10:40 · 139 阅读 · 0 评论 -
畅通工程续(spfa)+求最短路径
题目链接题意:求两点之间最短距离(迪杰斯特拉)Dijkstra算法:以起始点为中心向外层层扩展(bfs),直到扩展到终点为止。#include <iostream>#include <vector>#include <algorithm>#include <cstring>#include <queue>using namespace std;const int maxn=205;vector<pair<int,原创 2020-10-15 18:26:55 · 111 阅读 · 0 评论 -
网络最大流
题目code#include <iostream>#include <queue>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int N=1e4+5;const int M=2e5+5;struct node{ ll y,w,nxt;};node Edge[M<<1];ll head[N]原创 2020-07-29 11:19:38 · 687 阅读 · 0 评论 -
Manacher(马拉车):字符串中最长回文子串长度
一、模板#include <iostream>#include <cstring>#include <algorithm>#define M 10000010using namespace std;char str[M],StrNew[2*M];int p[2*M],len;void init(){ int i; len=strlen(str); StrNew[0]='@'; StrNew[1]='#'; for(原创 2020-07-24 18:11:50 · 154 阅读 · 0 评论 -
KMP算法
串的模式匹配算法:#include <iostream>#include <cstring>#include <algorithm>#include <string>using namespace std;int Next[1100];void getNext(string t){ Next[0]=-1; Next[1]=0; int len=0,i=1; while(i<t.length())原创 2020-10-04 14:51:10 · 77 阅读 · 0 评论 -
树状数组模板
求数组区间和:#include <iostream>#include <cstring>using namespace std;int lowbit(int n){ return n-(n&(n-1));}void updata(int n,int i,int v,int c[]){ for(int k=i; k<=n; k+=lowbit(k)) c[k]+=v;}int getsum(int c[],int i)原创 2020-09-20 20:58:21 · 61 阅读 · 0 评论