废话:这道题很是花了我一番功夫。首先,我不会kmp算法,还专门学了一下这个算法。其次,即使会用kmp,但是如果暴力枚举的话,还是毫无疑问会爆掉。因此在dfs的基础上加上两次剪枝解决了这道题。题意:我没有读题,只是队友给我解释了题意,然后我根据题意写的题。大概意思是给n个字符串,从上到下依次标记为1—...
分类:
其他好文 时间:
2015-11-10 00:11:56
阅读次数:
272
思路:1.找出n个字符串中最短的字符串Str[N]2.从长到短找Str[N]的子子串 subStr[N],以及subStr[N]的反转字符串strrev(subStr[N]);(从长到短是做剪枝处理)3.用strstr()函数遍历所有的字符串,看是否含有此子子串subStr[N]或strrev(su...
分类:
其他好文 时间:
2015-11-09 22:26:51
阅读次数:
187
这道题被划到了动态规划里面去了,结果就是一道模拟题,懒了一点,直接用stl的优先队列,重载了一下运算符,写的时候保证只能一个在采,因为如果需要的采的次数比可以生产的次数少,那么生产的次数等于需要采的次数,算个小剪枝。 #include #include #include #include #incl...
分类:
其他好文 时间:
2015-11-02 15:34:08
阅读次数:
178
今天搞了一下传说中的经典搜索题——poj1011,果然里面充斥着各种巧妙的剪枝,做完之后回味一下还是感觉构思太巧妙,所以总结记录一下加深理解。原题:http://poj.org/problem?id=1011刚开始接触搜索的初学者面对这道题可能感觉无从下手,即便是告诉了要用深搜解决这道题,也不知道怎...
分类:
其他好文 时间:
2015-10-29 23:25:25
阅读次数:
1405
题意:Y和M要找一家KFC谈谈,求所用的最短时间,时间是根据走的步数决定的;思路:搜搜搜啊,不过T了三发(忧桑,需要剪枝;BFS+剪枝:剪枝方法:Y和M分别只有一个,但是"@"KFC却有很多;这样的话,我们可以从"Y"和"M"出发,记录所有的能到达Y和M的步数;这样的话,只需要搜两遍图然后查询就可以...
分类:
其他好文 时间:
2015-10-29 20:13:49
阅读次数:
244
今天搞了一下传说中的经典搜索题——poj1011,果然里面充斥着各种巧妙的剪枝,做完之后回味一下还是感觉构思太巧妙,所以总结记录一下加深理解。原题:http://poj.org/problem?id=1011刚开始接触搜索的初学者面对这道题可能感觉无从下手,即便是告诉了要用深搜解决这道题,也不知道怎...
分类:
其他好文 时间:
2015-10-29 20:07:54
阅读次数:
231
也是一个简单剪枝的dfs。记录所有为0的位置,依次填写,当发现某个空格可选的填写数字已经没有时,说明该支路无效,剪掉。不算是一个难题吧,但是还是花了不少时间,问题主要出在细节上,行列坐标反了、3乘3小格的位置判断等。写程序一定要细心。#include using namespace std;cons...
分类:
其他好文 时间:
2015-10-29 16:15:33
阅读次数:
125
题意就是把节点分成A、B两组,节点间距C给了,要求解分组的方法,使得∑Cij (i∈A,j∈B)最大。首先把所有节点都放在一组,然后采用深度优先搜索的方法,对每一个节点都做判断是否应该移到另一组去,判断的依据是移过去和不移过去哪个得到的和值比较大(这里移去B组后的计算方法就是加上该点和在A组中的所有...
分类:
其他好文 时间:
2015-10-29 12:50:33
阅读次数:
335
记忆化搜索,因为要求最小的,肯定是从小到大,依次添加,那么通过bfs,队列貌似是最好的选择。因为很可能那个数爆long long,所以采用字符串存储,并记录余数,通过模拟除法的方式来写。 剪枝:因为后面添加的数都是一样的,所以相同的余数后面的过程都是一样的,所以我们需要通过一个数组优化。 注意:st...
分类:
其他好文 时间:
2015-10-28 18:46:41
阅读次数:
190
题意:一只狗(柴犬,看到一块骨头,迷失在了maze里,S是起点,D是终点,问你能不能在时间T时从起点到达终点.这题有个小trick: 奇偶剪枝+普通剪枝解释一下:普通剪枝:从S到D要走的步数是k=abs(x1-x2)+abs(y1-y2);那么如果k>=T,永远不可能到达;奇偶剪枝:首先,分析一下两...
分类:
其他好文 时间:
2015-10-23 21:21:47
阅读次数:
255