摘要: 题意:长篇大论就是构建正反两个图,然后将正反图中各点距离源点的最短距离相加。分析:spfa和邻接表,注意答案得用long long 存啊。代码:View Code 1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 #include <queue> 5 using namespace std; 6 //spfa 7 //58924K 1625MS 8 const int maxnum=1000005; 9 const int maxdigit=1000000000; 阅读全文
posted @ 2012-08-24 16:02 pushing my way 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的。分析:参考http://blog.csdn.net/lyy289065406/article/details/6647445可以用图论中欧拉路的知识来解这道题,首先可以把木棒两端看成节点,把木棒看成边,这样相同的颜色就是同一个节点问题便转化为:给定一个图,是否存在“一笔画”经过涂中每一点,以及经过每一边一次。这样就是求图中是否存在欧拉路Euler-Path。由图论知识可以知道,无向图存在欧拉路的充要条件为:① 图是连通的;② 所有节点的度为偶数,或者有且只有两个度为奇数的节点。 阅读全文
posted @ 2012-08-24 12:49 pushing my way 阅读(699) 评论(0) 推荐(0) 编辑
摘要: 笛卡尔树又称笛卡儿树,在数据结构中属于二叉树的一种。笛卡尔树结构由Vuillmin在解决范围搜索的几何数据结构问题时提出的,从数列中构造一棵笛卡尔树可以线性时间完成,需要采用基于栈的算法来找到在该数列中的所有最近小数。由此可知,笛卡尔树是一种特定的二叉树数据结构,可由数列构造,在范围最值查询、范围top k查询(range top k queries)等问题上有广泛应用。它具有堆的有序性,中序遍历可以输出原数列。笛卡尔树是一棵二叉树,树的每个节点有两个值,一个为key,一个为value。光看key的话,笛卡尔树是一棵二叉搜索树,每个节点的左子树的key都比它小,右子树都比它大;光看value的 阅读全文
posted @ 2012-08-24 09:52 pushing my way 阅读(5254) 评论(0) 推荐(1) 编辑