- 博客(11)
- 收藏
- 关注
原创 Dijkstra
RT class woca { public: int x; int y; };//x下一个节点,y为权值 vector adj[10010]; int n,m,u,v,s; long long cost[10010],FZ[10010]; int dist[10010];bool CP[10010]; bool operator<(woca n,woca m) { if(n.y<
2015-08-27 14:42:26 378
原创 质因数分解以及乘法逆元
RT inline void EXGCD(LL a,LL b) { if(b==0) { X=1;Y=0; } else { EXGCD(b,a%b); LL p=X; X=Y; Y=p-(a/b)*Y; } } inline LL inve(LL num) { EXGCD(num,MOD); return X; } inline void Get_Factor
2015-08-27 14:17:19 360
原创 有向图Tarjan
RT inline void Tarjan(int x) { dfn[x]=low[x]=++index; flag[x]=1;push(x); for(int i=0;i<map[x].size();i++) { int next=map[x][i]; if(dfn[next]==-1) { Tarjan(next); low[x]=min(low[x],low
2015-08-26 20:31:01 379
原创 字典树
插入字典树: class woca { public: int son,brother; char p; }a[100000]; string A; void build_tree(string A) { int l=A.length(); int now=1; for(int i=0;i<l;i++) { if(a[now].son==0) { a[++sum].p=
2015-08-26 19:57:20 317
原创 二分图最大匹配
匈牙利算法: int match[140]; bool flag[140]; int map[140][140]; int dfs(int p) { int i; for(i=1;i<=N;i++) { if(map[p][i]==1&&flag[i]==0) { flag[i]=1; if(match[i]==-1||dfs(match[i])) { m
2015-08-26 19:44:50 310
原创 Dinic
网络流: bool bfs()//建层次图 { int i,temp;deque Q; Q.push_back(0);memset(dist,-1,sizeof(dist)); dist[0]=0; while(!Q.empty()) { temp=Q.at(0);Q.pop_front(); for(i=0;i<=N+1;i++) { if(map[temp][i
2015-08-26 19:43:05 376
原创 快速幂和快速乘法
RT ll Quick_Pow(ll a,ll n) { ll ret=1; ll temp=a%p; while (n){ if (n&1) ret=ret*temp%p; temp=temp*temp%p; n>>=1; } return ret; } ll Quick_Mul(ll x,ll m)
2015-08-26 19:42:12 395
原创 线性筛
线性筛法 #define M 100000 LL prime[M/3]; bool flag[M]; inline void get_prime() { LL i,j; memset(flag,false,sizeof(flag)); for(i=2;i<M;i++){ if(!flag[i])
2015-08-26 19:35:27 472
原创 树链剖分
做了两个题找了找感觉。 分别是 SPOJ375 和 codeforces191c,都是用线段树维护的。其实第二题不用线段树也可以。。关键是理解树链剖分的过程,然后找合适的数据结构去维护它。 SPOJ375:等下。。。 codeforces191c:#include #include #include #include using namespace std; struct Nod
2015-08-10 16:05:37 396
原创 手写邻接表
int head[400005],t; inline void init() { memset(head,0,sizeof(head)); t=1; } inline void add(int u,int v,int w) { map[t].u=u; map[t].v=v; map[t].w=w; map[t].next=head[u]; head[u]=t;t++; }
2015-08-10 16:04:22 427
原创 Test
#include using namespace std; int main() { printf("hello,world\n"); return 0; }
2015-08-02 10:14:28 327
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人