自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 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 79

原创 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

原创 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 607

原创 最大流

//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 86

原创 链式前向星

//链式前向星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

原创 图的基础

//图的存储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 82

原创 尺取法

//尺取法 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 73

原创 最大化平均值

//最大化平均值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 107

原创 埃氏筛

int a[N]={0};a[0]=a[1]=1;for(i=2;i*i<=N;i++){ if(a[i]==0) { for(j=i*2;j<=N;j+=i) { a[j]=1; } }}//1表示不是素数

2020-02-21 10:49:33 77

原创 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 90

原创 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 67

原创 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 153

原创 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 63

原创 离散化预处理

//数据离散化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 73

原创 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 247

原创 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 74

原创 最短路径算法

//单源最短路径问题//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 117

原创 并查集的实现

//并查集的实现#include<cstdio>#define N 100005int par[N],depth[N];//初始化 void init(int n){ for(int i=0;i<n;i++){ par[i]=i; depth[i]=0; }} int find(int x){ if(par[x]==x) return x; e...

2020-02-18 09:45:48 57

原创 二叉搜索树的实现

//二叉搜索树的实现,当然也可以使用set和map实现 #include<cstdio>struct node{ int val; node *lch,*rch;}; //插入操作,先判断是比叶子节点的值大还是小 node *insert(node *p,int x){ if(p==NULL) { node *q=new node; q->val =x;...

2020-02-18 09:28:53 60

原创 堆的一种实现方法

堆的一种实现方法//堆的模板#include<cstdio>int h[10005],num;void swap(int x,int y){ int t=h[x]; h[x]=h[y]; h[y]=t;}void pushdown(int i){ int t,flag=0;//节点的编号 while(i*2+1<num&&flag==0)...

2020-02-17 20:30:52 66

原创 树状数组模板

#include<cstdio>int a[500005],c[500005],n,m,o,x,y;int lowbit(int m){ return m&(-m);}int getsum(int x){ int ans=0; while(x>0) { ans+=c[x]; x-=lowbit(x); } return ans;}voi...

2020-02-15 09:55:22 70

原创 高精度乘法模板

#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 59

原创 快速幂模板一

#include<cstdio>typedef unsigned long long ll;ll qkpow(ll a,ll b,ll k);int main(){ ll c,d,e,m; scanf("%lld%lld%lld",&c,&d,&e); m=qkpow(c,d,e); printf("%lld^%lld mod %lld=%ll...

2020-02-15 09:37:23 55

原创 高精度加法模板

#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 89

原创 一种归并排序的模板

#include<cstdio>int a[100005],t[100005],n;void mergesort(int l,int r);int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); mergesort(1,n); for(int i=1;i<=...

2020-02-15 09:25:39 71

原创 一种快速排序的模板

#include<cstdio>int a[100005],t[100005],n;void quicksort(int l,int r); //l,r是排序的下界和上界int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); quicksort(1,n); ...

2020-02-15 09:23:24 86

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除