传送门:BZOJ1054傻逼广搜题,按位转化为二进制判重。
坑爹之处在于数字居然是黏在一起给出来的……代码上的小细节见下。#include
#include
#include
#include
#include
#include
#include
using na...
分类:
其他好文 时间:
2015-08-26 10:44:00
阅读次数:
125
dfs 即可,要求字典序而且不重复。
开始的时候用map判重。结果有几个样例TLE了。
然后我就直接全部搜出来,然后排序去重。过了。
#include
#include
#include
#include
#include
#include
#include
#include
//#include
//#include
//#include
#include
//#include
#...
分类:
其他好文 时间:
2015-08-20 13:04:42
阅读次数:
126
1.题目描述:点击打开链接
2.解题思路:本题是一道隐式图的搜索题目。一般来说,这类题目首先要定义状态,接下来是弄清楚状态如何转移,以及状态如何判重,如何判断当前状态是否和目标状态相同。至于求解最短路就是常用的BFS即可。接下来我们逐一展开讨论。
1.状态的定义:看到这道题,猛一下会想着把每个字符分别用01表示,然后看成二进制码进行状态压缩,这个状态定义虽然可以,但是显然,状态过于精确...
分类:
其他好文 时间:
2015-08-19 14:59:45
阅读次数:
220
n《=50W。(使用26快报)构造函数:26一个。截至构建26^4不同的字符串,最长的长度26^4+3。如此之大的输出“impossble”,被判重量的四维阵列。在正向结构的时间(开始一个字符开始后),此,可以构造出26^4-25种子,(bbbb~zzzz),构造不出来,于是,学习了他人方法,把这些...
分类:
其他好文 时间:
2015-08-17 21:34:08
阅读次数:
112
可以用 n * fghij 去枚举 abcde 判重即可由于fghij 可能自身重复较多,可以先判掉,节省时间;如果不写成函数的形式还能更快一些,因为第二次判段中x,已经判断过了。书中的做法是把两个数字化成字符串去,排序后判断用时
123ms#include
#include
#include
#include
///////...
分类:
其他好文 时间:
2015-08-17 19:38:06
阅读次数:
97
题意:有r个房间,一个人开始在1号房间并且1号房间灯亮着其他熄灭,现在要去r号房间,告诉d对房间之间有门,s个开关,每个房间i内开关控制的不是本房间的灯,而是另外一个房间j的灯,人每次可以开或关自己房间的开关,或移动到亮着的房间,不是亮着的不能进去,问最终到r号房间最少需要几个步骤,输出步骤。到r号房间后r号房间亮着其他熄灭。
思路:把r个房间灯的状态用01串表示,1表示亮着,0表示熄灭,人当前在的房间为2,这样初始状态为2000000,终态为0000002,map判重,bfs即可。...
分类:
其他好文 时间:
2015-08-16 10:49:16
阅读次数:
107
hashmap判重大法好 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define MOD 100000000710 const int ...
分类:
其他好文 时间:
2015-08-15 18:16:28
阅读次数:
125
基本思路是BFS: 1. 题目中已经说了,每相连的2X2格子中必有一个‘#’,也就是,每个点周围最多也就三个方向可以走。因此,可以把所有空格都提出来,形成一个图,直接遍历每条边,而不是每次判断4个方向是否可以走 2.关于结点判重,最初的想法是想用一个六维数组,后来参考了其它,发现其实可以用一个三.....
分类:
其他好文 时间:
2015-08-11 20:58:19
阅读次数:
128
八数码问题搜索有很多高效方法:如A*算法、双向广搜等
但在搜索过程中都会遇到同一个问题,那就是判重操作(如果重复就剪枝),如何高效的判重是8数码问题中效率的关键
下面关于几种判重方法进行比较:编码、hash、set
看到问题初学者最先想到的应该就是用一个vis数组标志一下即可。但是该申请多大的数组呢?一个9维数组(9^9=387420489太大了吧)?如果内存允许这是最高效的办法:O(1)
...
分类:
其他好文 时间:
2015-08-11 12:22:26
阅读次数:
210
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5327题解:1.判重 (利用set或压成2进制)
2.前缀和,结果为 sum[b] - sum[a-1]#include
#include
#include
#include
#include<cstdio...
分类:
编程语言 时间:
2015-07-30 19:34:46
阅读次数:
114