摘要: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2081刚看到最短路就想到了bfs搜索,但是看完题后发现bfs搜索解决完最短路问题后不好处理炸弹问题。我想过在state里边加上一个Boolean常量,来判断这个最短路是否过地雷,后来突然想到可以再dfs一下来判断过雷的最短路径的数目,所以那个方法就没有再尝试。dfs很容易想到要剪枝,有点像hdu1010的路径剪枝吧。。。悲剧的是我一直以为要求的是间谍被炸的概率,因此一直wa,更悲剧的时样例数据正好是50.00%,因此这个错误好难发现。。。。看错题的孩纸伤不起啊。。。。要吸 阅读全文
posted @ 2012-03-02 21:15 枫萧萧 阅读(336) 评论(0) 推荐(1) 编辑
摘要: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2050同样是一道bfs题,只不过难在如何对状态进行存储。我想了好长时间也没思路,看了别人的代码,理解后才写出来的。没法用状态数组标记(可能用set可以实现吧,没试过~~),所以用二进制来存储,比如都是白色,1111111111111111,最大时为2^16-1 = 65535,用很小的数组就可以存下。因为用到了二进制,就少不了位运算,因此要理解位运算后才能很好的理解这道题的算法。代码如下:#include<iostream>#include<cstdio 阅读全文
posted @ 2012-03-02 21:07 枫萧萧 阅读(521) 评论(2) 推荐(1) 编辑
摘要: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1438还是很经典的搜索题,有意思的是把原来的二维迷宫改为了立体迷宫,用三维数组来存储。易错的是三维容易把坐标弄错,我因为这wa了好多次。。。在纸上多画画就ok。代码如下:#include<iostream>#include<cstdio>#include<queue>#include<cstring>using namespace std;int dx[] = {-1, 1, 0, 0, 0, 0};int dy[] = { 阅读全文
posted @ 2012-03-02 20:58 枫萧萧 阅读(370) 评论(0) 推荐(1) 编辑