摘要: spfa:1.当给定的图存在负权边时,Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便派上用场了.2.我们约定有向加权图G不存在负权回路,即最短路径一定存在3.思路:用数组d记录每个结点的最短路径估计值,而且用邻接表来存储图G。我们采取的方法是动态逼近法:设立一个先进先出的队列用来保存待优化的结点,优化时每次取出队首结点u,并且用u点当前的最短路径估计值对离开u点所指向的结点v进行松弛操作,如果v点的最短路径估计值有所调整,且v点不在当前的队列中,就将v点放入队尾。这样不断从队列中取出结点来进行松弛操作,直至队列空为止。4.实现方法:建立一个 阅读全文
posted @ 2012-08-05 21:57 pushing my way 阅读(413) 评论(0) 推荐(0) 编辑
摘要: 题意:这个题类似poj2965,但是这个题翻转操作是:翻转单位(i,j)以及与(i,j)相邻的单位。目标也是要求翻转为全白或者全黑需要翻转的次数。分析:枚举第一行(即对第一行的方块进行翻转),16种可能性。翻转第二行的方块,修改对应列的第一行的方块,使得第一行全黑/白。翻转第三行的方块,修改对应列的第二行的方块,使得第二行全黑/白。翻转第四行的方块,修改对应列的第三行的方块,使得第三行全黑/白。最后查看第四行是否满足全黑/白。若不满足,则"Impossible"(只要有一种枚举不满足,其它的枚举也不满足,反之,只要有一种枚举满足,则所有的枚举都满足,因为同一个方块翻转两次, 阅读全文
posted @ 2012-08-05 21:56 pushing my way 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 题意:有一个4*4的+,-矩阵,矩阵中'+'代表门是开着的,'-'代表门是关着的。每一次翻转操作是将对应位置的x和y轴的所有门都进行翻转。求将所给出的状态变成门都开着的状态所需要翻转的门的个数。分析:1.'+'对应位置的行与列各个单位都进行一次翻转操作,那么整个图中只有这个'+'的位置符号改变了。2.因此只要对初始状态中的每一个'+'都进行一次操作,整个图中对应翻转的位置由0开始累加。最后取余2,得到为1的位置就是需要翻转的位置。3.整个图中需要翻转的最大次数是16次。代码:View Code 1 #include 阅读全文
posted @ 2012-08-05 21:53 pushing my way 阅读(203) 评论(0) 推荐(0) 编辑