Fork me on GitHub
摘要: 简单搜索,我这里用的是dfs,由于棋盘只有8x8这么大,于是想到dfs应该可以过,后来由于边界的问题,TLE了,改了边界才AC。这道题的收获就是知道了有些时候dfs没有特定的边界的时候要自己设置一个合适的边界。这题推导可知,任意两点之间马踩6步之内一定能够到达,6步之内还未搜到说明绝对不是最优结果,果断退出。所以这里的res开始时最小设定为6即可,随着设的res的增大,运行时间越来越多,因为深搜可以有很多的分支,不采取较小的边界的话,可能会浪费很多时间在无用的搜索上,所以需要如此剪枝。反复提交验证发现,res设不同值的运行时间如下:res = 6 102msres = 10 222msres. 阅读全文
posted @ 2014-03-05 17:13 whatbeg 阅读(309) 评论(0) 推荐(0)
摘要: 一段区间的最值问题,用线段树或RMQ皆可。两种代码都贴上:又是空间换时间。。RMQ 解法:(8168KB 1625ms)#include #include #include #include #include #include using namespace std;#define N 50003i... 阅读全文
posted @ 2014-03-05 14:56 whatbeg 阅读(199) 评论(0) 推荐(0)
摘要: 采用优先队列做BFS搜索,d[][]数组记录当前点到源点的距离,每次出队时选此时eng最小的出队,能保证最先到达的是eng最小的。而且后来用普通队列试了一下,超时。。所以,能用优先队列的,就要用优先队列。代码:#include #include #include #include #include #include using namespace std;#define N 1003struct node{ int x,y; int eng; bool operator a.eng; }};char ss[N][N];int dis[N][N];int n,m,res;... 阅读全文
posted @ 2014-03-05 14:50 whatbeg 阅读(280) 评论(0) 推荐(0)