![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
一些算法
乌克兰大野猪
一只快乐的小菜鸡
展开
-
2-SAT
int main(){ int V=6;//六个顶点分别代表a、b、c、非a、非b、非c add_edge(3,4); add_edge(1,0); add_edge(4,2); add_edge(5,1); add_edge(2,3); add_edge(0,5); scc(); for(int i=0;i<3;i++) { if(cmp[i]==cmp[i+3...原创 2020-03-08 15:47:54 · 82 阅读 · 0 评论 -
Tarjan
//Tarjan#include<bits/stdc++.h>using namespace std;int low[N],num[N],dfn;int sccno[N],stack[N],top;vector <int> G[N];void dfs(int u){ stack[top++]=u; low[u]=num[u]=++dfn; for(int...原创 2020-03-08 11:02:19 · 91 阅读 · 0 评论 -
Kosaraju
//Kosaraju#include<bits/stdc++.h>using namespace std;const int NUM=10005;vector <int> G[NUM],rG[NUM];vector <int> S;int vis[NUM],sccno[NUM],cnt;void dfs1(int u){ if(vis[u]) r...原创 2020-03-01 20:25:50 · 610 阅读 · 0 评论 -
最大流
//Foed-Fulkersonstruct edge{ int to,cap,rev;}; vector <edge> g[max];bool used[max];void addedge(int from,int to,int cap){ g[from].push_back((edge){to,cap,g[to].size()}); g[to].push_back(...原创 2020-02-26 16:24:26 · 87 阅读 · 0 评论 -
链式前向星
//链式前向星const int NUM=100005;struct Edge{ int to,next,w;}edge[NUM];int head[NUM];int cnt;void init(){ for(int i=0;i<NUM;i++){ edge[i].next =-1; head[i]=-1; } cnt=0;} void addedge(int...原创 2020-02-26 10:19:12 · 106 阅读 · 0 评论 -
图的基础
//图的存储struct edge{ int from,to,w; edge(int a,int b,int c){ from=a; to=b; w=c; }}; for(int i=1;i<=n;i++) e[i].clear();e[a].push_back(edge(a,b,c));for(int i=0;i<e[u].size();i++){ ...}...原创 2020-02-21 18:24:37 · 98 阅读 · 0 评论 -
尺取法
//尺取法 void solve(){ int res=n+1; int s=0,t=0,sum=0; for(;;){ while(t<n&&sum<S){ sum+=a[t++]; } if(sum<S) break; res=min(res,t-s); sum-=a[s++]; } if(res>n){ res...原创 2020-02-21 17:03:58 · 76 阅读 · 0 评论 -
最大化平均值
//最大化平均值int n,k;int w[N],v[N];double y[N];bool C(double x){ for(int i=0;i<n;i++){ y[i]=v[i]-x*w[i]; } sort(y,y+n); double sum=0; for(int i=0;i<k;i++){ sum+=y[n-i-1]; } return sum&...原创 2020-02-21 13:37:39 · 108 阅读 · 0 评论 -
KMP
#include<bits/stdc++.h>int N;char str[N],pattern[N];int getfail(char *p,int plen){ next[0]=0;next[1]=0; for(int i=1;i<plen;i++){ int j=next[i]; while(j&&p[i]!=p[j]){ j=nex...原创 2020-02-20 16:42:29 · 92 阅读 · 0 评论 -
Trie树
#include<bits/stdc++.h>using namespace std;struct trie{ trie *next[26]; int num; trie(){ for(int i=0;i<26;i++){ next[i]=NULL; } num=0; }}; trie root;void insert(char str[])...原创 2020-02-20 14:54:01 · 71 阅读 · 0 评论 -
BKDR哈希
//BKDRhashunsigned int bkdrhash(char *str){ unsigned int seed=31,key=0; while(*str) { key=key*seed+(*str++); } return key&0x7fffffff; }原创 2020-02-20 10:35:53 · 154 阅读 · 0 评论 -
ST表的模板
#include<cstdio>#include<cstring>#include<algorithm>#define M 25#define N 100005using namespace std;int n,m;int a[N],Log[N];int f[N][M];void GetLog(){ int i; Log[1]=0; f...原创 2020-02-19 10:24:13 · 66 阅读 · 0 评论 -
离散化预处理
//数据离散化void discretization() { for (int i = 1; i <= n; ++i) b[i] = a[i]; sort(b+1, b+n+1); int m = unique(b+1, b+n+1) - (b+1); for (int i = 1; i <= n; ++i) { int v = a[i]; a[i] = lowe...原创 2020-02-19 10:22:24 · 75 阅读 · 0 评论 -
DP与LIS LCS
//DP求LCS LIS #include<bits/stdc++.h> int LCS(){ memset(dp,0,sizeof(dp)); for(int i=0;i<=str1.length();i++) for(int j=1;i<=str2.length();j++) if(str1[i-1]==str2[j-1]) dp[i][j]...原创 2020-02-18 20:21:02 · 249 阅读 · 0 评论 -
01背包
//经典DP//0/1背包#include<cstdio>#include<bits/stdc++.h>using namespace std;struct BONE{ int val; int vol;}bone[1011];int t,v,n;int dp[1011][1011];int ans(){ memset(dp,0,sizeof(dp)...原创 2020-02-18 19:14:05 · 77 阅读 · 0 评论 -
最短路径算法
//单源最短路径问题//Bellman-Fordstruct edge{ int from,to,cost;};edge es[N]; //es是边 int d[M];int v,e; //v是顶点数,e是边数 void shortestpath(int s)//s是顶点 { for(int i=0;i<v;i++) d[i]=INF; d[s]=0; ...原创 2020-02-18 11:46:13 · 118 阅读 · 0 评论 -
高精度乘法模板
#include<cstdio>#include<string>#include<iostream>using namespace std;int main(){ int a[5010],b[5010],c[5010],i,j; string A,B; cin>>A>>B; int len1=A.length(),len...原创 2020-02-15 09:50:35 · 62 阅读 · 0 评论 -
高精度加法模板
#include<iostream>#include<string>#include<cstdio> using namespace std;int main(){ int i,j; string A,B; int a[520],b[520],c[520]; cin>>A>>B; int len=max(A.lengt...原创 2020-02-15 09:30:24 · 91 阅读 · 0 评论