摘要: 思路: 最大步骤有20,直接BFS会超时。 因为知道开始情况和结果所以可以用双向BFS,每个BFS规定最大步骤为10,这样相加肯定小于20。这里要保存每个状态搜索到的最小步骤,用Hash储存。当发现现有状态已经在另一路出现了,那么就输出两者相加的步骤和。 代码: 阅读全文
posted @ 2018-07-06 18:55 KirinSB 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 思路: 要用优势队列,因为有的+2,有的+1,所以队列中的步长是不单调的,所以找到一个答案但不一定最小,所以用优势队列把小的放在队首。 要记录状态,所以开了三维,题目和昨天做的那道小明差不多 vis开的int型赋值bool型WA了半天 代码: 阅读全文
posted @ 2018-07-06 14:41 KirinSB 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 思路: 如果用朴素的方法算O(n^4)超时,这里用折半二分。把数组分成两块,分别计算前后两个的和,然后枚举第一个再二分查找第二个中是否有满足和为0的数。 注意和有重复 阅读全文
posted @ 2018-07-06 11:39 KirinSB 阅读(106) 评论(0) 推荐(0) 编辑