08 2014 档案

摘要:此题中起点有1000个,边有20000条。用链式前向星建图,再枚举起点用SPFA的话,超时了。(按理说,两千万的复杂度应该没超吧。不过一般说计算机计算速度 1~10 千万次/秒。也许拿最烂的计算机来卡时间) 有一个技巧,加一个超级源点。也就是加一个点,使得该点连通所有的起点,并且边的权值为0。... 阅读全文
posted @ 2014-08-31 23:20 pengmq 阅读(326) 评论(0) 推荐(0)
摘要:此题的关键在于分层次,最低一层的人的奖金是888,第二层是888+1 …… 分层可以这样实现。建立反向图。在拓扑排序的时候,第一批入度为0的点就处于第一层,第二批处于第二层 …… 由于是逐个遍历入度为0的点,所以怎么实现上面所说的第一批,第二批就需要动点脑。 可以试试下面的测试数据:4 3... 阅读全文
posted @ 2014-08-31 15:57 pengmq 阅读(223) 评论(0) 推荐(0)
摘要:做拓扑排序的题目,首先要知道两条定理: 1、最后得到的拓扑数组的元素个数如果小于n,则不存在拓扑序列。 (有圈) 2、如果一次入队的入度为零的点数大于1,则拓扑序列不唯一。 (关系不确定) 本题有一个默认的东西,如果到了第K(看K 2 #include 3 #include 4 ... 阅读全文
posted @ 2014-08-31 12:49 pengmq 阅读(227) 评论(0) 推荐(0)
摘要:这题,我在学搜索的时候做过。不过好像不叫这名字。 1、先用Floyd算法判断图的连通性。如果1与n是不连通的,输出hopeless。 2、用Bellman_Ford算法判断是否有正圈,如果某点有正圈,并且该点与第n点是连通的。就输出winnable。当然,没有正圈的情况下,可以到达也是可以的... 阅读全文
posted @ 2014-08-30 19:56 pengmq 阅读(641) 评论(0) 推荐(0)
摘要:这题的关键是把车站的名字转化为点的编号。我用的是map。声明一个map st,然后按照字符串出现的次序给st赋值。例如:st[s1]=2;代表这字符串s1出现的次序是2。出现过的已经被标记。不会重复。接下来用模版就好。不过有一点要注意的是当起点和终点一样是,要输出0。 1 #include 2 ... 阅读全文
posted @ 2014-08-30 16:39 pengmq 阅读(194) 评论(0) 推荐(0)
摘要:LCA问题有好几种做法,用到(tarjan)图拉算法的就有3种。具体可以看邝斌的博客。http://www.cnblogs.com/kuangbin/category/415390.html 几天的学习,我就弄懂了离线的Tarjan算法。在此,先鄙视一下哈工大出版的《图论及应用》,离线的Tar... 阅读全文
posted @ 2014-08-29 21:22 pengmq 阅读(307) 评论(0) 推荐(0)
摘要:这题比HDU4009要难一些。做了4009,大概知道了最小树形图的解法。拿到这题,最直接的想法是暴力。n个点试过去,每个都拿来做一次根。最后WA了,估计是超时了。(很多题都是TLE说成WA,用了G++才知道是TLE,不断修改代码也看不出来错哪了)。 网上的正解是添加一个虚拟根(树根),使得它与... 阅读全文
posted @ 2014-08-28 21:35 pengmq 阅读(517) 评论(0) 推荐(0)
摘要:每一户人家水的来源有两种打井和从别家接水,每户人家都可能向外输送水。 打井和接水两种的付出代价都接边。设一个超级源点,每家每户打井的代价就是从该点(0)到该户人家(1~n)的边的权值。接水有两种可能,从高处接水,那么代价是哈密顿距离与Y的乘积(可以认为就是水管的费用);从低处接水,还要加上付出... 阅读全文
posted @ 2014-08-28 20:02 pengmq 阅读(595) 评论(0) 推荐(0)
摘要:题目的大意可以理解为:A爱B,B爱C ……给出一系列爱恋的关系,推断有没有同性恋。 思路是把相同性别的归为一个集合(等价类),异性的异性为同性。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 con... 阅读全文
posted @ 2014-08-27 00:53 pengmq 阅读(211) 评论(0) 推荐(0)
摘要:先发发牢骚:图论500题上说这题是最小生成树+DFS,网上搜题解也有人这么做。但是其实就是次小生成树。次小生成树完全当模版题。其中有一个小细节没注意,导致我几个小时一直在找错。有了模版要会用模版,然后慢慢融会贯通。我要走的路还长着啊。 这里有两个次小生成树的模版: http://www.cnb... 阅读全文
posted @ 2014-08-26 23:46 pengmq 阅读(525) 评论(0) 推荐(0)
摘要:大家都说,搜索是算法的基础。今天最这题就有体会了。在n个顶点里选择m个顶点,求最小生成树。用到了深搜的回溯。所有情况都能枚举。#include#include#include#includeusing namespace std;const int N=20,INF=0x3f3f3f3f;int... 阅读全文
posted @ 2014-08-26 13:33 pengmq 阅读(249) 评论(0) 推荐(0)
摘要:离线算法是将全部输入都读入,计算出所有的答案以后再输出的方法。主要是为避免重复计算。类似于计算斐波那契数列的时候用打表的方法。 题目:给一个无向图,求有多少个点对,使得两点间的路径上的花费小于L,这里路径上的花费是这样规定的,a、b两点之间所有的路径中的最大边的最小值。 当然题目上不是这么... 阅读全文
posted @ 2014-08-22 23:00 pengmq 阅读(247) 评论(0) 推荐(0)
摘要:因为每个人小朋友只有两只手,所以每个点最多只有2度。图有可能是环、链,以及环和链构成的复杂图。 如何判断两幅图是否相似呢?判断相似是判断两幅图的圈的数量,以及构成圈的点数是否相同。还有判断链的数目和构成链的点数是否相同。 具体实现:标记环(或者链),按照点的数目排序。如果点数相同,环排在... 阅读全文
posted @ 2014-08-22 21:17 pengmq 阅读(431) 评论(0) 推荐(0)
摘要:这道题是拓扑排序和并查集的综合运用。 由于排行榜是一种从高到低的排序。所以在拓扑排序的时候,如果有一次加入的入度为零的点数大于1,就有变得不确定了(UNCERTAIN)。 由于只有一棵树,当树的数量大于1,就矛盾。还有一种产生矛盾的可能是,当输入的是a>b(或者a 2 #include 3 ... 阅读全文
posted @ 2014-08-22 19:37 pengmq 阅读(252) 评论(0) 推荐(0)
摘要:这道题有深搜和广搜。深搜还有要求,靠左或靠右。下面以靠左为例,可以把简单分为上北,下南,左西,右东四个方向。向东就是横坐标i不变,纵坐标j加1(i与j其实就是下标)。其他方向也可以这样确定。通过上一步方向可以确定下一步应该从哪个方向开始搜。比如说,是向北走的,就必须先搜西,西不可以走,再搜北,如果北... 阅读全文
posted @ 2014-08-22 19:19 pengmq 阅读(226) 评论(0) 推荐(0)