摘要: 题意:一个人在大楼的0楼,大楼最多到99层,有n部电梯每部电梯有可到达的楼层每个电梯移动一层的时间为T[i]秒换电梯的时间为60秒,给你一个楼层问你电梯到这个楼层的最短路径。思路:很容易看出是一个最短路问题,关键在于如何建图,首先我们分析一下我们很容易想到把楼层当作点把时间当左边,但是有一个问题由于它涉及楼层中换电梯所以这样做的话我们就无法计算换电梯的时间,所以我的方法是把一个楼层拆成n个点(这样做的前提是在这道题中n比较小 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9... 阅读全文
posted @ 2013-12-09 22:00 张小豪 阅读(462) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个无向带权图,以及一个起始点一个终点。问你从起始点到终点的最短路径。思路:由于点最多有10000个,所以用裸的dijkstra显然是不行的,又由于边最多为20000条所以mlogn复杂度既可以了。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define INF 50000111 #define LEN 2000212 13 using namespace std;14 15 typedef pa... 阅读全文
posted @ 2013-12-09 17:09 张小豪 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个有向带负权图, 问其中存不存在负环。思路:用bellman-ford算法松弛n-1次,然后在第n次时判断是不是还有点能松弛,若还能松弛则说明存在负环。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define INF 0x7fffffff11 #define LEN 510112 #define ll long long13 using namespace std;14 15 ll n, m, ... 阅读全文
posted @ 2013-12-09 01:45 张小豪 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个源点一个终点求一条路径是路径上最小的那条边最大。思路:先求最大生成树,然后从源点搜索到终点求权值最小的边即可。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define INF 0x7fffffff 11 #define eps 1E-8 12 #define LEN 110 13 14 using namespace std; 15 16 int n, m, top, vis[LE... 阅读全文
posted @ 2013-12-09 00:53 张小豪 阅读(151) 评论(0) 推荐(0) 编辑
摘要: Problem A K-Periodic Array题意:一个数列中有1与2的序列组成,问最少修改多少个数,能使数列成为从开头开始每k个一组每组的相应位置都一样。思路:做法就是枚举每一位上的数字1多还是2多,哪个多就让全部的数变成那一个。最后累加求和即可。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #define INF 0x7fffffff13 #define... 阅读全文
posted @ 2013-12-09 00:48 张小豪 阅读(241) 评论(0) 推荐(0) 编辑