上一页 1 ··· 38 39 40 41 42 43 44 45 46 ··· 48 下一页
  2012年5月30日
摘要: http://poj.org/problem?id=3694用了Tarjan bfs 缩点所以时间复杂度比较高思路 先建双向图 重边要处理(用一个变量表示边数)用Tarjan算法缩点重新建了一个缩点后的双向图增加边时用bfs 搜索路径上的桥如果还有就对数量进行操作并将此桥标记为没有每次重复#include<iostream>#include<cstring>#include<stack>#include<cstdio>#include<queue>using namespace std;const int N=100005;struc 阅读全文
posted @ 2012-05-30 22:10 夜-> 阅读(213) 评论(0) 推荐(0) 编辑
  2012年5月29日
摘要: http://poj.org/problem?id=1330最近公共父结点离线算法 LCA用并查集 和 dfs每搜到一个点 先让其父结点等于自己继续往下搜 这时如果询问已搜过的点 则两点之间的最近公共父结点就是 已搜过的点的最上父结点若没搜过 就继续深搜所用相连的点都搜完后 让此点的父结点为上一层结点#include<iostream>#include<cstring>using namespace std;const int N=10005;struct node{ struct tt *next;}mem[N];struct tt{ struct tt *next; 阅读全文
posted @ 2012-05-29 21:25 夜-> 阅读(134) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1523居然1A and 0ms 太让我意外了题目大意:给你几个电脑的双相连通图 问你是否存在割点 如果存在输出割点并输出此割点见原图变成了几个块输入输出只要注意就是了 没别的办法Tarjan 算法 我就不多说了 我也说不好总之用Tarjan算法找割点 但是你搜索时的根结点要特判对不每个割点用dfs求其可把原图分成几个块从割点发出可能用k个分支 那么块数 <= k对其分支进行深搜并记录 有几个分支可以向下搜 就有几个块深搜记录 可以搞定几个分支相连的情况详情见代码注释:#include<iostream>#include&l 阅读全文
posted @ 2012-05-29 17:04 夜-> 阅读(188) 评论(0) 推荐(0) 编辑
  2012年5月28日
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1269题目大意:给你一个迷宫 给你结点个数和一定数目的单向边问你迷宫是否强连通做这道题这是为了练习一下Tarjan算法关于这个算法网上很多而已版本 大多都一样 我就不多说了详解见代码注释#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<queue>#include<stack>using namespace std;const int N= 阅读全文
posted @ 2012-05-28 20:02 夜-> 阅读(168) 评论(0) 推荐(0) 编辑
  2012年5月24日
摘要: http://poj.org/problem?id=2516此题和2195题是一个题型不同之处在于此题需要对每种物品均求一次最小花费然后合计而且每种物品 还要看是否满足了需求量 有一种物品不满足的话就输出-1我的方法很笨 依次对每种物品进行求解而且由于流很小 我直接用了每次流都是减一 下个题应该就不行了(我猜)详情见代码注释#include<iostream>#include<string>#include<cstring>#include<algorithm>#include<queue>#include<cstdio> 阅读全文
posted @ 2012-05-24 21:35 夜-> 阅读(157) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2195任何问题 都是 难了不会 会了不难 难就难在由不会变成会尤其是刚接触到一个新知识点的时候硬着头皮,耐心地去看去理解,一定能学会,然后你就会发现它原来并不难本题是一个最小费用流详解见代码注释#include<iostream>#include<string>#include<cstring>#include<algorithm>#include<queue>#include<cstdio>using namespace std;const int N=1001;// 阅读全文
posted @ 2012-05-24 19:43 夜-> 阅读(164) 评论(0) 推荐(0) 编辑
  2012年5月22日
摘要: http://poj.org/problem?id=1364http://acm.hdu.edu.cn/showproblem.php?pid=1531差分约束 基本上就是 给你数列之间的一些大小限制把它们 转化为点之间的限制条件 限制条件代表边就变成最短路或最长路了 求的时候需判断有没有负环或正环一般用 Bellmen_ford 写 还有就是效率更高一些的 SPFA本题解释见代码注释#include<iostream>#include<cstdio>#include<string>#include<queue>#include<stack 阅读全文
posted @ 2012-05-22 18:41 夜-> 阅读(202) 评论(0) 推荐(0) 编辑
  2012年5月21日
摘要: http://poj.org/problem?id=3159经过我不断的尝试 老天重要显灵了终于来个个 1400+ms 伤不起呀用 queue 过不了 得用 stack可能对于后台数据 queue 会有一些多余的搜索也可能时 stack 本身比 queue 用快一些anyway 我的代码就得用 stack还有就是题目描述有点问题它是让我们求 flymouse 最多比 snoopy 多得多少 candy#include<iostream>#include<cstdio>#include<string>#include<queue>#include& 阅读全文
posted @ 2012-05-21 19:21 夜-> 阅读(181) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2983假设以最北为超级源点对于 P north south x 代表south 在 north 的南边 x 光年处则 north 在south 南边的 -x 光年处如果矛盾的话 则及存在负环 也存在正环 我们把-x 这种情况也保存 是为了下面V north south 它是至少 1 光年 如果它使问题矛盾的话 则可利用上面保存的 -x 的情况让我们发现正环所以综合以上 :P 情况 x 和-x 情况都保存,v 只保存 x=1然后用Bellman-Ford 查找是否有正环即可代码如下#include<iostream>#includ 阅读全文
posted @ 2012-05-21 11:16 夜-> 阅读(201) 评论(0) 推荐(0) 编辑
  2012年5月20日
摘要: http://poj.org/problem?id=1201第一次做差分约束 看了别人的解析 挺详细的出自http://user.qzone.qq.com/289065406/blog/1307063918然后自己根据自己的理解 写了代码 建议去看上面链接处的解析 非常不错#include<iostream>#include<cmath>#include<string>#include<algorithm>#include<queue>#include<cstring>#include<cstdio>using 阅读全文
posted @ 2012-05-20 18:45 夜-> 阅读(171) 评论(0) 推荐(0) 编辑
上一页 1 ··· 38 39 40 41 42 43 44 45 46 ··· 48 下一页