概要:判重的时候可以用手写hash,也可以用stl中的map,手写hash的好处是快,解决冲突的方案较好,map慢。但是手写hash要求的空间高,而且有时处理得不好的话会wa。注意及技巧:注意的是,hash的函数一定要写好,但是写好又爆空间。一般采用元素个数作为基数然后乘上递增的这个基数的幂作为权重...
分类:
其他好文 时间:
2014-09-28 19:46:45
阅读次数:
181
http://acm.hdu.edu.cn/showproblem.php?pid=5025
TLE了好几次
写的时候,问题在于,
1、钥匙怎么处理
参考了他人的写法,vis[key_num][i][j],相当于将图多维化,这样就可以判重了,否则只是按照普通的BFS,钥匙数不同的时候,可以重复,这个代码难易表达出来
2、蛇怎么处理
没蛇的话,第一次搜到的可行解就是最优解,
有蛇的话,...
分类:
其他好文 时间:
2014-09-27 00:53:08
阅读次数:
473
概要:我们在初始状态要到达终止状态可以沿着同深度的向下搜索,这样范围覆盖更广,在解的深度较小的时候十分适用。技巧及注意:bfs很多技巧啊,我来一一列举吧:注意:存bfs状态时一定要尽量小化状态,只存有效的信息来进行bfs,而不要存整个图进去(QAQ,noip就是这样挂的。当时太弱。。)hash判重:...
分类:
其他好文 时间:
2014-09-26 18:03:58
阅读次数:
197
题目链接
题意:一自行车的轮子被分成5个扇区,涂了5种不同颜色。自行车每1秒要么骑到下一个格子,要么左转或者右转90。。一开始自行车面向北,颜色为绿,到达目标格时,必须触底颜色为绿,但朝向无限制。求到达目标格的最短时间。
思路:判重数组多加两维,分别为朝向和颜色,之后就可以用BFS求最少时间了。
代码:
#include
#include
#include
#...
分类:
其他好文 时间:
2014-09-25 12:59:28
阅读次数:
234
2014
ACM/ICPC Asia Regional Guangzhou Online
N*N矩阵 M个钥匙
K起点,T终点,S点需多花费1点且只需要一次,1-9表示9把钥匙,只有当前有I号钥匙才能拿I+1号钥匙,可以不拿钥匙只从上面走过
4维数组判重,第三维表示钥匙已经拿到第几把,第四维表示已经走过的S的状况,用状压存储
#include "stdio.h"
#in...
分类:
其他好文 时间:
2014-09-23 21:58:25
阅读次数:
250
题目链接:
huangjing
题意:
给了一幅图,然后这幅图里面有一个孙悟空,一个唐神,然后还有m把钥匙,还有最多5条蛇,然后蛇只要第一次杀死,杀这条蛇的时间为1S,并且后来再遇到的时候就不用加时间了,求最小的拯救时间。
思路:
首先那5条蛇可以用5位二进制数表示,然后开一个3维的数组判重,前两维保存坐标,后一维保存钥匙的状态,那么就可以了,还要注意的是因为有杀蛇这个操作,所以用优...
分类:
其他好文 时间:
2014-09-22 19:11:15
阅读次数:
249
2014 ACM/ICPC
Asia Regional Beijing Online
对于N*N的矩阵
M起点,T终点
有起始方向分别向北N,东E,南S,西W的摄像头,可以检测的范围为自己+所指方向1格,每1秒顺时针旋转90°
前面有灯或者自己站的地方有灯,移动需要花3秒,或者原地等一秒。
BFS优先队列
开3维 hash数组判重,第三维是在该点等待的时间,开到4即可(摄像...
分类:
其他好文 时间:
2014-09-22 17:44:13
阅读次数:
235
(北京网络赛09题)题意:给一矩阵(图),里面有起点,终点,还有探照灯(每个有初始朝向,每秒顺时针转90度),前面有灯或者自己被灯照着,移动就要花3秒,求起点到终点最短时间。
用一个数组三维数组记录一下,用来当前位置当前时间%4有没有灯,然后优先队列(时间短的在前面),搜索即可。考虑到可以来回走或者原地等,不能简单判重剪枝:每个地方最多是4种状态!就是4秒之后就全图状态回到一样!所以若当前状态(...
分类:
其他好文 时间:
2014-09-21 23:38:41
阅读次数:
352
经典的字符串转换问题:http://codevs.cn/problem/1099/
昨天刚学了广度搜索,今天就用上了,一开始百度了一下,看到所有人都是在用双向广度搜索,现在还是很不明白双向的原理,居然不需要判重!!!速度快这个容易理解,好吧,骚年加油,今天ccf认证考试,明天再来学双向的!
首先说说这个吧,广度搜索最关键的还是这两个点:
1. 如何建立搜索树?
2. 如何判断状态重复?
...
分类:
其他好文 时间:
2014-09-21 12:11:10
阅读次数:
239
分析:该题是经典的队列题目,直接用队列实现就可以。如果数据范围大一些的话还可hash判重! 这可以说是一道送分的题目,但是还有粗心的学生会在这里失分,主要原因是数组的范围定义的不合适,因为空间足够用,在考试中数据范围要稍大一些。当然还有个别同学是因为模拟失误了,这种送分题目我只能说,一定要多对...
分类:
其他好文 时间:
2014-09-20 18:05:39
阅读次数:
184