摘要: 题目链接:https://www.acwing.com/problem/content/173/ 要求从n件物品中选出若干件,重量之和不超过w并且最接近w,由于有45件最多,所以O(2^n)时间复杂度过高,可以考虑减半先搜索出结果,用另一半在前一半中二分寻找, 最终拼成结果,时间复杂度约为O(2^n 阅读全文
posted @ 2020-06-19 18:54 WA自动机~ 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 题目链接;http://poj.org/problem?id=2248 要求给出一个严格递增的数列,首元素是1,尾元素是n,并且要求最短。 可以得知,在一百以内的最优策略中,搜索的深度不会超过10,深度最坏的情况下是有100层的,而且深处数的分支会越来越多,考虑到层数最多是10层,所以我们可以考虑使 阅读全文
posted @ 2020-06-19 17:05 WA自动机~ 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1190 剪枝的常用思考策略:优化搜索顺序(从决策数量越少的位置开始决策)、排除冗余的等效的操作、可行性剪枝、最优性剪枝、上下界剪枝,其中在可行性剪枝方面可以利用“未来期望进行剪枝” 要充分利用不等式关系进行放缩,将不可能的状态进行剪枝, 阅读全文
posted @ 2020-06-19 15:00 WA自动机~ 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题目链接;http://poj.org/problem?id=1011 又是拼木棍呀,不过这次我是对他的剪枝原理完全弄清楚了,最后两条剪枝还真的是很难想到的。这次的剪枝中加入了一条:我们在某一跟木棍中拼接时,选择的木棍长度是递减的,这样就保证了搜索树中不会有重叠的部分,不过其实在木棍中,小木棒是无序 阅读全文
posted @ 2020-06-19 11:45 WA自动机~ 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3074 本题的重点在于利用二进制位高效地判断一个位置能填哪些数,行、列、九宫格中能填的数的用一个二进制数表示,相与便是能填的数的二进制表示,使用lowbit函数可以 依次取出最低有效位进行搜索。基于几个常识:我们做数独的时候一定每次都是 阅读全文
posted @ 2020-06-19 10:27 WA自动机~ 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://www.acwing.com/problem/content/167/ 首先看到这个数据范围就知道需要用搜索来实现,保存的当前状态是一共用了多少缆车,当前扫描的小猫编号 ,每个缆车中的重量。其中第三个状态是可以用全局数组来维护的, 前面两个状态作为dfs的参数传入,每次可以 阅读全文
posted @ 2020-06-19 09:13 WA自动机~ 阅读(251) 评论(0) 推荐(0) 编辑