自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

晴朗的博客

当你得意的时候,不要忘记你有一半命运掌握在上帝手中;当你失意的时候,不要忘记你有一半命运掌握在自己手中!

  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

转载 poj 3228 二分+最大流

#include#include#include#includeusing namespace std;const int VM=220;const int EM=50010;const int INF=0x3f3f3f3f;int n,m,src,des,map[VM][VM],dis[VM][VM];int total,gold[VM],store[VM],dep[VM

2014-07-29 20:04:07 534

原创 poj 2516 最小费用最大流

原来这个代码超时#include#include#includeusing namespace std;#define N 200#define inf 0x3fffffffint cap[N][N];int fee[N][N];int s,t,sum,pre[N];int spfa() {queueq;int dis[N],visit[N],u,i;memset(p

2014-07-29 10:45:56 682

转载 hdu 3605 二分图多重匹配

转载地址:http://www.cnblogs.com/Griselda/archive/2012/09/17/2689345.html题意:给出每个人适合住的星球信息和该星球能住多少人 第一行给出n m 代表有 n 个人 m 个星球然后接下来n行每行m个数字 1代表适合第 i 个星球 0 代表不适合第 i 个星球最后一行m个数表示第 i 个星球最多可以住多少个人问是不是所有

2014-07-26 11:21:57 467

原创 hdu 3605 最大流sap+二进制思想(啊啊)

/*因为n非常大如果正常建边的话会超内存,每种状态的数目共2……10种状状体记录起来,源点与状态建边权值为状态数,状态与星球建边,星球与汇点建边*/#include#include#includeusing namespace std;#define inf 0x3fffffff#define N 3000struct node {int u,v,w,next;}bian[N*

2014-07-26 11:06:30 554

原创 hdu 3572 最大流判断满流

#include#include#includeusing namespace std;#define inf 0x3fffffff#define N 4000struct node {int u,v,w,next;}bian[N*N*4];int head[N],yong,n,s,t;void init() {memset(head,-1,sizeof(head));yo

2014-07-25 19:24:44 560

原创 hdu 2242双联通分量+树形dp

/*先求出双联通缩点,然后进行树形dp*/#include#include#include#define inf 0x3fffffff#define N 11000struct node {int u,v,next;}bian[N*4],edge[N*4];int head[N],yong,dfn[N],low[N],index,f[N*4],cnt,n,num[N];int

2014-07-25 11:47:33 513

原创 hdu 1384 查分约束

#include/*要善于挖掘隐含条件dis[v]-dis[u]>=bian[i].w;一个条件(u,v,bian[i].w);dis[i+1]>=dis[i];隐含条件(i,i+1,0);dis[i+1]-dis[i]=dis[i+1]-1;(i+1,i,-1);>=求最大约束条件,求最长路.<=求最小约束条件,求最短路.*/#include#includeusing na

2014-07-24 09:20:39 516

原创 hdu 2196 树形dp

/*先走一遍dfs找到每个点到他的子节点的位置,回溯的时候找到最大值和次大值再用一个dfs来更新值,先看是否是u最长路上的点,如果是的话用最大值+权值更新最大值和次大值,否则的话用次大值+权值更新最大值和次大值*/#include#include#define N 11000struct node{ int u,v,w,next;} bian[N*2];int ma[N

2014-07-23 18:59:42 450

原创 hdu 4612 双联通缩点+树形dp

#pragma comment(linker,"/STACK:102400000,102400000")//总是爆栈加上这个就么么哒了#include#include#includeusing namespace std;#define N 210000#define inf 99999999struct node { int u,v,w,next;}bian[N*20],bi

2014-07-22 11:16:20 546

原创 poj 3469 最小割模板sap+gap+弧优化

/*以核心1为源点,以核心2为汇点建图,跑一遍最大流*/#include#include#includeusing namespace std;#define N 21000#define inf 999999999struct node {int u,v,w,next;}bian[N*40];int head[N],cur[N],gap[N],stac[N],top,n,si

2014-07-22 09:47:28 604

原创 hdu 4858 容器的简单模拟

#include#include#includeusing namespace std;#define N 110000vectorq[N];int f[N];int main() { int t,n,m,i,j,k,a,b; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(i=1;i<=n;i

2014-07-21 19:36:28 521

原创 hdu 4857 逆向拓扑排序+反向输出

/*一组测试实例4 4 23 12 4*/#include#include#includeusing namespace std;#define N 31000struct node {int u,v,next;}bian[N*10];int head[N],yong,indegree[N],n,f[N],len;void init() {memset(head,-

2014-07-21 17:18:54 566

原创 isap算法模板poj 1273gap+弧优化 最大流

几个比较好的博客http://www.renfei.org/blog/isap.htmlhttp://kenby.iteye.com/blog/945454http://blog.csdn.net/mypsq/article/details/37959249

2014-07-21 16:58:56 742

转载 ISAP 算法的学习

http://www.renfei.org/blog/isap.html算法与数学网络流-最大流问题 ISAP 算法解释2013-08-07Renfei Song 2 条评论内容提要 [隐藏]1 约定2 引入3 算法解释4 实现ISAP 是图论求最大流的算法之一,它很好的平衡了运行时间和程序复杂度之间的关系,因此非常常用。约定我们使用邻接表来表示图,表示方法可以见文章

2014-07-20 17:14:43 946

原创 poj 1523 求割点把一个图分成几个联通部分

#include#include#define N 1100struct node {int u,v,next;}bian[N*N*2];int head[N],dfn[N],low[N],index,cut[N],yong,visit[N],dd[N],len,vis[N];void init() {memset(head,-1,sizeof(head));memset(df

2014-07-20 16:10:56 722

原创 poj 2117 去掉割点可以分得的联通图的个数模板

#include#include#define N 11000/*去掉一个割点后,询问可以分得的联通图的个数*/struct node {int u,v,next;}bian[N*100];/*cut数组记录去掉某个节点后可以增加的联通分支的个数,num数组记录以i为根节点的联通图的元素的个数*/int head[N],n,yong,cou,index,dfn[N],low[

2014-07-20 14:43:40 639

转载 poj 2942 求点双联通+二分图判断奇偶环+交叉染色法判断二分图

http://blog.csdn.net/lyy289065406/article/details/6756821http://www.cnblogs.com/wuyiqi/archive/2011/10/19/2217911.html#include "stdio.h"#include "string.h"#define N 1010int time;int n,m;bool

2014-07-20 12:02:43 499

原创 codeforces 257c

#includeint main() { __int64 n,m,k,i,j,a,b; while(scanf("%I64d%I64d%I64d",&n,&m,&k)!=EOF) { if(n+m-2<k) { printf("-1\n"); continue; } a=k+1; b=1; if(k+1>n) {

2014-07-20 10:38:17 759

原创 codeforces 257B

#include#define mod 1000000007int main() { __int64 n,m,i,j,k,x,y,z; while(scanf("%I64d%I64d%I64d",&x,&y,&n)!=EOF) { z=y-x; i=n%3; j=n/3; if(i==0) { i=3; j--; }

2014-07-20 10:34:16 514

原创 hdu 2444 交叉染色判断二分图+二分最大匹配

/*1A 32ms*/#include#include#define N 300int n;struct node {int u,v,next;}bian[N*N*2];int color[N],vis[N],link[N],visit[N],ma[N][N],f[N],head[N],yong;void addedge(int u,int v) {bian[yong].u=u

2014-07-19 18:56:38 470

转载 uva 交叉染色法10004

鉴于网上讲交叉染色的资料比较少,于是我把我自己的心得与方法贴出来,方便与大家共同进步。二分图:百度百科传送门wiki百科传送门判断一个图是否为二分图可以用交叉染色的方法来判断,可以用BFS,也可以用DFS,这里我用使用DFS来实现。思路:任意取一个点进行染色,如果发现要涂某一块时这个块已经被涂了色,并且与我们要使用的颜色不同的话,就说明这个图不能被染成BICOLORABLE

2014-07-19 16:55:45 601

原创 poj 3177&&3352 求边双联通分量,先求桥,然后求分量( 临界表代码)

/*这道题是没有重边的,求加几条边构成双联通,求边联通分量,先求出桥然后缩点,成一个棵树找叶子节点的个数*/#include//用容器写在3177这个题上会超内存,但是用临界表过了#include/*此代码为临界表代码*/#define N 5100struct node {int u,v,next;}bian[N*4];int dfn[N],low[N],index,f[N*4

2014-07-19 15:59:53 502

原创 poj 3177&&poj 3352加边构双联通(有重边)用tarjan 模板求的

#include/*求边双联通分量和求强连通差不多,先缩点求出叶子节点的个数*/#include#define N 5100struct node {int u,v,next;}bian[N*4];int dfn[N],low[N],head[N],index,cnt,yong,stac[N],suo[N],vis[N],top,degree[N];void init() {

2014-07-19 15:38:00 536

原创 网上有一种错误的做法是:因为每一个双连通分量内的点low[]值都是相同的,则dfs()时,对于一条边(u,v),只需low[u]=min(low[u],low[v]),这样就不用缩点,最后求度数的时候

2014-07-19 15:05:09 784

原创 poj 3006水题打素数表

#include#include#define N 1100000int isprim[N],prime[N];void isprime() { int i,j;memset(isprim,-1,sizeof(isprim)); isprim[1]=0; for(i=2;i<=1000;i++) if(isprim[i]==-1) { for(j=i*2;

2014-07-19 10:47:19 493

转载 POJ 3352 无向图边双连通分量,缩点,无重边

为什么写这道题还是因为昨天多校的第二题,是道图论,HDU 4612。当时拿到题目的时候就知道是道模版题,但是苦于图论太弱。模版都太水,居然找不到。虽然比赛的时候最后水过了,但是那个模版看的还是一知半解,主要还是对于无向图缩点不了解。所以今天特意找了道求无向图边双连通分量,然后缩点的题学习一下,这道题的缩点和昨天那道差不多,唯一的区别就是这是无重边的,那题是有重边的。先搞掉这个,下午

2014-07-19 09:57:11 522

原创 hdu 3352 求边双联通分量模板题(容器)

/*这道题是没有重边的,求加几条边构成双联通,求边联通分量,先求出桥然后缩点,成一个棵树找叶子节点的个数*/#include#include#define N 1100int top[N],ma[N][N],dfn[N],low[N],index,f[N][N],n;int Min(int a,int b) {return a>b?b:a;}void tarjan(int u,

2014-07-19 09:25:54 596

原创 2767 Proving Equivalences 至少加几条边让全部图变成强连通模板题

#include#include#define N 21000struct node {int u,v,next;}bian[N*3];int head[N],dfn[N],low[N],index,vis[N],stac[N],top,yong,cnt,suo[N],indegree[N],outdegree[N];void init() {yong=0;index=0;top=

2014-07-18 20:15:25 481

转载 关于有重边的强连通分量

有向图的的情况比较简单只有一种强连通,重边和连向自己的边对于强连通都没有任何影响无向图的双连通要分点双连通(biconnected)和边双连通(edge_biconnected),连向自己的边对于俩种双连通也没有任何影响,但是重边对点双连通没有影响,但是对于边双连通有影响,因为在求边双连通时,要求对于任意俩点至少存在两条“边不重复”的路径,所以这个时候表示图我们不能用vector了,而是用邻接

2014-07-18 17:09:44 681

转载 双联通分量

双连通分量分类: 文摘 2011-10-16 10:22 1393人阅读 评论(0) 收藏 举报算法存储[点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定义为,最小割点集合中的顶点数。 类似的,如果有一个边集合,删除这个边集合以后,

2014-07-10 17:44:27 737

转载 Tarjan算法求解桥和边双连通分量(附POJ 3352 Road Construction解题报告)

在说Tarjan算法解决桥和边双连通分量问题之前我们先来回顾一下Tarjan算法是如何求解强连通分量的。 Tarjan算法在求解强连通分量的时候,通过引入dfs过程中对一个点访问的顺序dfsNum(也就是在访问该点之前已经访问的点的个数)和一个点可以到达的最小的dfsNum的low数组,当我们遇到一个顶点的dfsNum值等于low值,那么该点就是一个强连通分量的根。因为我们在dfs

2014-07-10 17:28:18 650

转载 无向图求点割集的算法

黑书上给出了关于求点割集的算法,但是比较模糊,我查阅了网络上的相关资料,理解了求点割集的过程,写出如下求点割集的代码,并写了一些简单的证明. 割点集的定义:如果在连通图G中去掉某一点后图不连通,那么这个点即为G的割点,所有割点的集合即为点割集。 求点割集的方法:利用tarjan算法的思想,用数组dfn[v]存储DFS遍历到点v的时间,数组low[v]存储点v能追溯到最早的祖先节点。如果对

2014-07-10 16:34:43 4961 1

原创 hdu 2121无根最小树形图要建一个虚拟节点

#include#include#define inf 999999999#define N 1100struct node {int u,v,w;}edge[11000];int visit[N],dis[N],id[N],pre[N],yong,n,index;void addedge(int u,int v,int w){edge[yong].u=u;edge[yong

2014-07-07 20:29:46 608

原创 hdu 1576扩展欧几里得算法

#include#define ll long long/* 2.那么x,y的一组解就是x1*m1,y1*m1,但是由于满足方程的解无穷多个,在实际的解题中一般都会去求解x或是y的最小正数的值。以求x为例,又该如何求解呢?还是从方程入手,现在的x,y已经满足a*x+b*y=m,那么a*(x+n*b)+b*(y-n*a)=m显然也是成立的。可以得出x+n*b(n=…,-2,-1,0,1,

2014-07-07 17:20:28 587

转载 欧几里德算法的扩展-求解不定方程

扩展欧几里德算法是用来在已知a, b求解一组p,q使得p * a+q * b = Gcd(p, q) (解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。下面是一个使用C++的实现: int exGcd(int a, int b, int &x, int &y) { if(b == 0) { x = 1; y = 0; return a;

2014-07-07 16:14:11 782

原创 hdu 3072 强连通+缩点+最小树形图思想

#include#include#define N 51000#define inf 1000000000struct node { int u,v,w,next;}bian[N*2];int dfn[N],low[N],yong,index,ans[N],visit[N],head[N],stac[N],top,num,n;void init() { yong

2014-07-07 10:20:07 502

转载 最小树形图的学习也可以叫 有向图的最小生成树

http://baike.baidu.com/view/5944982.htm?fr=aladdin本词条缺少信息栏、名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!最小树形图,就是给有向带权图中指定一个特殊的点root,求一棵以root为根的有向生成树T,并且T中所有边的总权值最小。最小树形图的第一个算法是1965年朱永津和刘振宏提出的复杂度

2014-07-06 17:12:38 1037

原创 hdu 4009 最小树形图模板题朱刘算法

#include/*思路:显然对于每个地方,只有一种供水方式就足够了,这样也能保证花费最小,而每个地方都可以自己挖井,所以是不可能出现无解的情况的,为了方便思考,我们引入一个虚拟点,把所有自己挖井的都连到这个点,边权为挖井的花费,而如果i能从j处引水,则从j向i连边,边权为引水的花费,然后对这个有向图,以虚拟点为根,求最小树形图即可(最小树形图即为有向图的最小生成树)。*/#incl

2014-07-06 17:08:23 564

原创 hdu 1250 简单大整数加法

#include#include#define N 3100int a[N],b[N],c[N],d[N],e[N];int main() { int n,i,j,k,t; while(scanf("%d",&n)!=EOF) { memset(a,0,sizeof(a));memset(c,0,sizeof(c)); memset(b,0,sizeof(b));me

2014-07-05 11:41:14 531

原创 hdu 3594 强连通好题仙人掌图,对自己的tarjan模板改下用这个

#include#include#define N 21000struct node {int v,next;}bian[51000];int yong,dfn[N],low[N],stac[N],top,index,visit[N],ans,flag,mark[N],head[N],pre[N];void init() {//初始化memset(dfn,0,sizeof(dfn)

2014-07-05 11:08:56 514

gnutls-3.5.8-w32.tar.bz2

和openssl一样,一个比较全的加解密库,包括ocsp,证书,和各种算法等

2018-09-10

libasn1-0.1.0.tar.gz

一个比较好的asn1工具库,你可以通过这个已经写好的完整的asn1代码,来学习asn1标准,并使用.

2018-09-10

空空如也

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

TA关注的人

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