这道题我临场想到了枚举菱形的起点和终点,然后每次枚举起点指向的点,每个指向的点再枚举它指向的点看有没有能到终点的,有一条就把起点到终点的路径个数加1,最后ans+=C(路径总数,2)。每两个点都这么弄。但是我考虑时间复杂度n2前面的系数过大会超时,再想别的方法也没想出来。。其实思路就是这样的,只不过...
分类:
其他好文 时间:
2014-11-18 23:36:36
阅读次数:
304
BFS、双向BFS和A*
Table of Contents
1. BFS2. 双向BFS3. A*算法
光说不练是没用的,我们从广为人知的POJ 2243这道题谈起:题目大意:给定一个起点和一个终点,按骑士的走法(走日字),从起点到终点的最少移动多少次
设A为寻路起点,B为目标终点。
1 BFS
BFS其实是退化的A*算法,因为他没有启发函数做指引...
分类:
其他好文 时间:
2014-11-14 19:48:15
阅读次数:
291
题目大意:给定一个无向图,每条边上有权值,求起点到终点的路径中最长边和最短边的最小比值
随手点开一道居然是动点SPFA的裸题…… 魔法森林都切了这个问题就不大了
我们把边权排序,从大到小加进这个图中,每加进一条边就把边的两个端点加进队列,直接跑SPFA,维护起点到每个点路径上的最长边的最小值,然后用当前边权作为分母更新ans
这样可以保证每次跑出来的都是当前边为最短边时起点到终点的最长边的最...
分类:
其他好文 时间:
2014-10-30 15:22:31
阅读次数:
176
最大连续和的方法总结
第一种:暴力。复杂度O(n^3)。用两个循环枚举起点和终点,然后中间再放一个循环,计算这个起点到终点的连续和。
伪代码:
max = -INF;
s[maxn];
for i in range(1, len):
for(j in range(i, len)):
sum = 0;
...
分类:
其他好文 时间:
2014-10-29 13:08:54
阅读次数:
203
题目大意:给定一张图,和每个点的油价,知道每条路的耗油量,给定一些询问,求从起点到终点用指定油箱容量的车所得到的最小耗费。
解题思路:BFS+优先队列
优先队列介绍:采用stl中的priority_queue实现。priority_queue默认的是最大优先队列,声明时只要priority_queue q就行了。如果是最小堆,麻烦一些
priority_queue,cmp> q。其中cmp函...
分类:
其他好文 时间:
2014-10-24 14:45:31
阅读次数:
205
计算几何。。首先题意很难懂,多亏了纬哥解释,才懂。。就是有左边有一条折线,右边有一条折线,两条折线的起点和终点的纵坐标相同,还有一些摄像头,一条线段平行x轴的线段从起点到终点,必须得在两条折线中间,并且不能碰到摄像头,问线段最长的长度其实不难的,思路很快就有了,先o(n)处理左边折线的点到右边的折线...
分类:
其他好文 时间:
2014-10-13 23:04:37
阅读次数:
270
题意:给你一个三维迷宫,从起点到终点求最短步数。
思路:和二维的迷宫问题差不多,稍微改成三维的就行了。...
分类:
其他好文 时间:
2014-10-12 17:59:58
阅读次数:
236
UVA 816 - Abbott's Revenge
题目链接
题意:一个迷宫,每个点限制了从哪一方向来的,只能往左右前走,然后问起点到终点的最短路径
思路:BFS,每个点拆成4个方向的点,对应能走的方向建图跑一下bfs即可
代码:
#include
#include
#include
#include
#include
using namespace st...
分类:
其他好文 时间:
2014-10-10 23:16:44
阅读次数:
212
题意:给你一个图,告诉你起始点S,终点E,‘.’可走,‘#’不可走。求从起点到终点1.总是先选择向左走的步数。2.总是选择先向右走的步数。3.最短路思路: 对于第一种和第二种,用深搜,只要写对存方向的数组即可:int r[4][2]= {{0,-1},{1,0},{0,1},{-1,0}};int ...
分类:
其他好文 时间:
2014-10-02 14:19:02
阅读次数:
256
1 //Accepted 1688 KB 0 ms 2 //概率简单题 3 //假设我们在n个门前加个起点,在n个门后加个终点,起点可以到达n个门, 4 //为正的门可以到达终点,为负的回到起点 5 //则假设我们从起点到终点的期望时间为e 6 //那么e=1/n*sum(x1)+1/...
分类:
其他好文 时间:
2014-10-01 09:59:30
阅读次数:
305