上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 14 下一页
摘要: 题意:在一张图中会有重边,然后每条边上有两个权值,一个温度一个距离,让你找一条温度的最小瓶颈路,让这条最小瓶颈路距离最短。思路:二分温度,然后用Dijkstra判断,最后输出答案。虽然想到思路后很简单,但是我一开始没注意看会有重边所以错了好多次。代码如下: 1 /************************************************** 2 * Author : xiaohao Z 3 * Blog : http://www.cnblogs.com/shu-xiaohao/ 4 * Last modified : 2014-02-06 1... 阅读全文
posted @ 2014-02-06 14:41 张小豪 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一张无向带权图,求出最小生成树和次小生成树。思路:数据小直接爆。枚举删除最小生成树上的每一条边。代码如下: 1 /************************************************** 2 * Author : xiaohao Z 3 * Blog : http://www.cnblogs.com/shu-xiaohao/ 4 * Last modified : 2014-02-05 20:31 5 * Filename : uva_10600.cpp 6 * Description : 7 * ******... 阅读全文
posted @ 2014-02-05 21:17 张小豪 阅读(464) 评论(0) 推荐(0) 编辑
摘要: 题意:在一棵树上求距离中点,若距离是奇数则输出中间两个点。思路:看到题意第一反应是lca,再看一下数据量那么小。。。一定有什么简单的做法。其实只要dfs一下就可以了保存路径输出中间的两个点。代码如下: 1 /************************************************** 2 * Author : xiaohao Z 3 * Blog : http://www.cnblogs.com/shu-xiaohao/ 4 * Last modified : 2014-02-05 18:39 5 * Filename : uva_109... 阅读全文
posted @ 2014-02-05 19:06 张小豪 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题意:给一张无向图,若存在圈则输出每个圈上最大的边的权值。思路:题目的提示已经很明显了,求最小生成树可以用破圈发,每次删去圈上最大的那条边。那么反过来说圈上最大的边就是最小生成树中没有出现的那些边了。所以我们求完最小生成树,然后把边标记一下,然后剩下来的输出就行了。代码如下: 1 /************************************************** 2 * author : xiaohao z 3 * blog : http://www.cnblogs.com/shu-xiaohao/ 4 * last modified : 2014-0... 阅读全文
posted @ 2014-02-05 18:11 张小豪 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 题意:在一张无向带权图中,求a-b的一条路经满足这条路径上的最小的边最大。思路:仔细一看就能发现这不是最小瓶颈路的变形嘛,最小瓶颈路是让你求最大的边最小,这道题的意思就是反了一下,而且还是单组询问的。所以我们用kruskal先求最大生成树,然后第一次合并询问节点的边即为答案。代码如下: 1 /************************************************** 2 * Author : xiaohao Z 3 * Blog : http://www.cnblogs.com/shu-xiaohao/ 4 * Last modified : 2... 阅读全文
posted @ 2014-02-05 17:39 张小豪 阅读(563) 评论(0) 推荐(0) 编辑
摘要: 小豪的第一次div1。Problem A题意:一叠砖块每个砖块都有最大负载量,就是上面碟的砖块数不能超过负载。给你若干砖块,问你最少堆几堆?思路:贪心题,先排序然后每次检查能不能堆在已有的砖块上,不行在新开一堆,最后输出答案即可。代码如下: 1 //2014-02-03-23.33 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #define MP(a, b) make_pa... 阅读全文
posted @ 2014-02-04 02:30 张小豪 阅读(384) 评论(4) 推荐(0) 编辑
摘要: 从寒假一开始,到现在也学习了两个多星期的图论中dfs的相关算法,也做了一些题目。在这里先把强连通分支及其应用做一个第一阶段总结,巩固一下也便于开始下一步学习。在这里我也会列出我总结的一套模版。首先我们要明确下面的这些算法都是针对有向图而言的,先笼统的说一下强连通分支是什么?其实就是有向图中的一部分,在这部分里任意两个节点都相互可达。虽然表述可能不规范,但是应该比较形象吧。一、强连通分支(scc)接下来我们先来学习一下如何在一张给定的图中求出强连通分支,我们需要介绍两个算法:(1)Kosaraju算法这个算法的思想很简单,也比较好写。前提是我们已经熟练掌握了dfs的写法及思想。下面是算法流程:首 阅读全文
posted @ 2014-02-02 20:54 张小豪 阅读(3508) 评论(1) 推荐(0) 编辑
摘要: 题意:有A,B,C三种任务分配给n个宇航员,没个宇航员分配一个任务,只有年龄大于等于平均年龄的宇航员才能分配任务A,年龄小于平均年龄的宇航员才能分配任务B。所有宇航员都能分配任务C。由于有一些宇航员之间存在矛盾所以不能分配同一种任务。现在让你来分配,如果有输出分配情况。思路:这一看这道题对于没个宇航员有三种状态,但在想一下便可发现对于一个宇航员来说年龄是唯一的,所以A,B中只能选一个。这样一来状态就变成2个了。转化成了2-SAT问题。代码如下: 1 /************************************************** 2 * Author : x... 阅读全文
posted @ 2014-02-01 15:13 张小豪 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 题意:有n架飞机需要着陆,每架飞机都有两个时间可以选择,早和晚。告诉你每架飞机的这两个时间,然后我们定义相邻两架飞机着陆时间间隔的最小值为安全间隔。问你安全间隔最大能为多少。思路:一个典型的2-sat+二分判断的问题。首先我们对安全间隔二分答案,然后再2-sat判断可行性。思路理清的话没什么难度。代码如下: 1 /************************************************** 2 * Author : xiaohao Z 3 * Blog : http://www.cnblogs.com/shu-xiaohao/ 4 * La... 阅读全文
posted @ 2014-02-01 13:44 张小豪 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 题意:在一张有向图中最少添加几条边,能使它强连通。思路:自己想的时候差了一点。。最后还是看了一眼白书秒过了。首先第一步很简单当然是缩点。变成DAG接下来问题就是DAG上最少添几条边使他强连通。其实只要求出max(出度为零的节点数,入度为零的结点数)。注意当原图已经强联通时特判一下。代码如下: 1 /************************************************** 2 * Author : xiaohao Z 3 * Blog : http://www.cnblogs.com/shu-xiaohao/ 4 * Last modified ... 阅读全文
posted @ 2014-01-31 23:56 张小豪 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 题意:给一张有向图, 求一个结点数最大的结点集,使该节点集中任意两个结点u,v满足要么u可达v,要么v可达u。思路:由于在无向图中的一个强连通分支内一旦一个点被选中那么这个分支内的其它点都会被选中,所以我们可以先求强连通分支然后缩点形成DAG。把强连通分支内点的个数看作是点的权值。再记忆化搜索就搞定了。代码如下: 1 /************************************************** 2 * Author : xiaohao Z 3 * Blog : http://www.cnblogs.com/shu-xiaohao/ 4 *... 阅读全文
posted @ 2014-01-31 21:17 张小豪 阅读(294) 评论(0) 推荐(0) 编辑
摘要: Problem AGeorge and Sleep题意:给出两个时间计算上面减下面。水题代码如下: 1 //2014-01-30-21.18 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #define MP(a, b) make_pair(a, b)14 #define PB(a) push_back(a)15 16 using namespace std;17 18 ty... 阅读全文
posted @ 2014-01-31 02:39 张小豪 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 题意:在一个长方形网格中有行(street)和列(avenue)。然后每两个点(x,y)之间有一条简单路径表示他们只要转一次弯。每各行和列都是单向的方向由你来决定。问你能不能满足所有给你的询问(a, b)都有一条a->b的简单路径。思路:我们可以看到一共有m+n条路每条路都有两个方向可以选。这样就联想到了2-sat,然后就是分析题目对于两个点当横坐标和纵坐标都不想等的时候我们会得到上面这种情况。(a^b)U(c^d) =(a U d)^(b U c)^(a U c)^(b U d)对于横坐标纵坐标都想等我们不需要建边。然而有一个相等,若是a = 非a->a而非a = a->非 阅读全文
posted @ 2014-01-30 09:47 张小豪 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 题意:这道题很有意思。他是给你一个无向图然后让你把尽量多的边转化成单向边,然后是整张图还是强联通的。思路:看到这道题的第一反应就是求割边,应为割边所连接的都是双连通分支对于双连通分支我们只需要化成单向边就能解决问题。然后对于割边我们才需要化成双向边。之后我就考虑了一下如何输出答案。这很容易就类似于欧拉通路我开了两个标记数组,一个标记点,另一个标记边。输出一条标记一条即可。注意不要经过桥。然后最后再把所有的桥输出就可以了。代码如下: 1 /************************************************** 2 * Author : xiaohao Z ... 阅读全文
posted @ 2014-01-29 16:07 张小豪 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 题意:有一些骨牌,告诉你一些关系a->b表示a倒了b也会倒。然后问你最少要推到几个才能使所有的骨牌都倒下。思路:这道题其实就是用的强连通分支的kosaraju算法。其实在了解了这个算法之后我们不妨来想想是怎么样的一个逻辑关系。第一遍dfs我们先得到了在vs数组中的拓扑关系。到了第二遍,我们就从拓扑序列高的先开始dfs(可以直观的了解到只要拓扑序列高的倒下了,那么拓扑序列低的必定倒下了)所以我们得到的dfs次数即为答案了。代码如下: 1 /************************************************** 2 * Author : xiaohao Z .. 阅读全文
posted @ 2014-01-29 14:20 张小豪 阅读(278) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 14 下一页