上一页 1 ··· 5 6 7 8 9 10 11 12 下一页

2012年6月27日

poj 1236 Network of Schools

摘要: http://poj.org/problem?id=1236题意:1.要求出至少发分配多少站点,使所有点都能收到,即求入度为0的分量。 2.求要添加多少点,使任意一个点发送物品,其他点都能收到物品,即求Max(入度为0的分量个数,出度为0的分量个数)。注意单点的情况.View Code #include<string.h>#include<stdio.h>#include<iostream>#include<stack>#include<utility>using namespace std;const int maxn = 105; 阅读全文

posted @ 2012-06-27 19:53 aigoruan 阅读(123) 评论(0) 推荐(0)

poj 2762

摘要: http://poj.org/problem?id=2762题意:给一个无向图,问对任意的两个点x,y,是否都存在一条路径从一个点出发到达另一个点。思路:先用tarjan对无向图进行缩边和求弱连通分量,如果弱连通分量不为1,则No;然后重建无向图,判断是否是线树,是则Yes,否则No。注意:缩边后的图不一定是棵标准的树。View Code #include<stdio.h>#include<string.h>#include<stdlib.h>#include<iostream>#include<stack>#include<u 阅读全文

posted @ 2012-06-27 19:09 aigoruan 阅读(137) 评论(0) 推荐(0)

2012年6月21日

ACM的第六乐章--后缀数组

摘要: 以下题目属于入门级别hdu 1403 ural 1517 简单后缀数组应用http://acm.hdu.edu.cn/showproblem.php?pid=1403http://acm.timus.ru/problem.aspx?space=1&num=1517http://poj.org/problem?id=2774题意:给两串字符,求最长的公共子串。思路:把两个串合成一个串,之间用‘#’隔开,然后对后缀排序,求出height数组值后,当height[k]为两个串的公共前缀长度时,取最大的。hdu 3518http://acm.hdu.edu.cn/showproblem.php 阅读全文

posted @ 2012-06-21 10:01 aigoruan 阅读(458) 评论(0) 推荐(0)

ACM的第七乐章--Tarjan lca

摘要: tarjan 求解lca主要利用并差集的想法:首先遍历树,从叶子节点开始向上合并成一棵棵的子树,然后子树并子树,就成了一棵树了。查找是在合并的时候进行的,exp:u是s,t的lca,先从u节点进入s,把s并到u下面,然后发现t没有被访问,退到u,再进入t,同样把t并到u下面,发现s被访问过了,那么s的lca也就是s,t的lca了,也就是并差集里的f[s]。当然,f[s]会变的:假设当前f[s] = u; f[u] = u; 当u并到v的时候,也就是f[u]=v; 相应的f[s] = v。这也就是tarjan求解lca的关键方法。poj 1330 tarjan lcahttp://poj.org 阅读全文

posted @ 2012-06-21 09:49 aigoruan 阅读(611) 评论(0) 推荐(0)

ACM的第二乐章--BFS

摘要: bfs和dfs一样,也是以树形搜索形状进行的,只不过dfs是以树根开始一个个的搜索,而bfs则以步数、层次展开搜索,也就是从树根一层层的向外拓展。这种拓展需要的空间一般都是指数级的,所以不能像dfs一样灵活搜索,往往都是在一定的剪枝策略下展开的,因而bfs一般适合求解最优解。标志性的bfs里会有一个队列,队列里的状态是理解bfs过程的关键,一般来说,队列里存储的是等待拓展的状态,这些等待拓展的状态是很难知道先后关系的,但是队列里的层次、步数的状态肯定是从队头到队尾递增的,往往我们求解的就是这些递增的状态。Catch That Cowhttp://poj.org/problem?id=3278重 阅读全文

posted @ 2012-06-21 09:36 aigoruan 阅读(188) 评论(0) 推荐(0)

2012年6月20日

hdu 4005

摘要: http://acm.hdu.edu.cn/showproblem.php?pid=4005思路:缩点之后形成一棵树,连任意两个点都能之后形成一个环,那么破坏这个环上的任意一个边都不会破坏图的连通性,我们只有破坏不在环上的边才能使图不连通。由于边是任意加的,我们当然要使最小的边尽量都在环里面。好了,这样的话我们可以先找一条最小边,因为如果最小边不在环里的话,那么破坏一个最小边就可以了。找到最小边了之后,以最小边的两个端点分别向两侧遍历一条路径,使得路径上的边的值都尽量小,也就是说使不在路径上的边的值的最小值尽量大,怎么做到呢?稍微想一下,在遍历的时候,对于每个点,他与各个儿子边的次小值(儿子边 阅读全文

posted @ 2012-06-20 21:22 aigoruan 阅读(368) 评论(0) 推荐(0)

hdu 2063

摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2063第一个二分图。裸二分图。View Code #include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#include<stdlib.h>using namespace std;const int maxn = 501;int as[maxn][maxn];int vis[maxn],to[maxn];int k,n,m;int dfs(int x){ int 阅读全文

posted @ 2012-06-20 13:19 aigoruan 阅读(144) 评论(0) 推荐(0)

2012年6月19日

hdu 3072 Intelligence System

摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3072题意:在一个有向图中,有多个连通分量,每个连通 分量都会有一个根节点,求当满足每个根节点都可以到其它根节点时的最小权值。环中的间的权值都为0.思路:因为有环,而已环中的权值为0,所以要进行缩点,缩点后重建图,所得到的图将没有环。然后枚举每个根节点,进行记忆化搜索就好了。View Code #include<stdio.h>#include<string.h>#include<iostream>#include<stack>#include<utili 阅读全文

posted @ 2012-06-19 21:30 aigoruan 阅读(171) 评论(0) 推荐(0)

hdu 1827 Summer Holiday

摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1827题目意思:在一棵有向图中,每个点都有一个权值,求有多少个连通分量;在某个连通分量中,求出可以遍历这个连通分量的点,使得这个点的权值最小。思路:如果没有环,则起点就是所要求的点。如果有环且环上的点都能遍历这个边通分量,则选择环上权值最小的点。定义:每次选择的初始点为根。选择没有遍历过的点作为根,进行tarjan遍历,如果一开始就进入了环,则要把整个环都标记到根上,取环上的最小值作为根的权值。如果发现可以到达其它根,则把该根去掉。View Code #include<string.h>#incl 阅读全文

posted @ 2012-06-19 19:44 aigoruan 阅读(380) 评论(0) 推荐(0)

hdu 3594 Cactus

摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3594这是一个很好的题目,很巧的利用的low[u]和dfn[u]。如果low[u]!=dfn[u],则说明已经存在环,如果我们访问u点时发现low[u]!=dfn[u],则说明有一条边在两个环上了。View Code #include<stdio.h>#include<string.h>#include<iostream>#include<stack>#include<algorithm>#include<utility>using na 阅读全文

posted @ 2012-06-19 17:35 aigoruan 阅读(226) 评论(2) 推荐(0)

上一页 1 ··· 5 6 7 8 9 10 11 12 下一页

导航