上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 30 下一页
摘要: 题目链接;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自动机~ 阅读(151) 评论(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) 编辑
摘要: 题目链接:https://www.acwing.com/problem/content/description/166/ 计算有向无环图中每个点可达的点的数量,可以先通过拓扑排序确定点的拓扑序,因为在一个点处理之前,他所能到达的所有点都要先被处理,所以我们处理的顺序 只要是按照拓扑排序的逆序处理就能 阅读全文
posted @ 2020-06-18 18:19 WA自动机~ 阅读(171) 评论(0) 推荐(0) 编辑
摘要: #include<iostream> #include<string.h> using namespace std; #define maxn 100 int ver[maxn],head[maxn],nxt[maxn],size[maxn],len[maxn]; int n,m; int vis[ 阅读全文
posted @ 2020-06-18 16:59 WA自动机~ 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://www.acwing.com/problem/content/description/151/ 给定长度为n的序列,代表一个单词的出现次数,要求构造k叉哈夫曼树使得总权值最小,并且在权值最小的情况下问最小的高度是多少? 我们可以考虑不断取k个数组成一个新的结点放入优先队列, 阅读全文
posted @ 2020-06-18 16:16 WA自动机~ 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://www.acwing.com/problem/content/149/ 题目中给出一些点在x轴上的位置,问选出k对位置的情况下,他们的两两距离之和的最小值是多少?容易直到,选中的位置一定是相邻的而且没有交集,我们对原始序列求差分之后问题 就变成了在这个差分序列中寻找k个不相 阅读全文
posted @ 2020-06-18 13:43 WA自动机~ 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2442 给定一个M*N的矩阵,要求从每一行中都取出一个数然后累加,问最小的N个累积和为多少。使用堆可以在O(MNlogN)时间复杂度内求出。 M行的最大取法一定是通过前M-1行的最大取法+第M行取数然后求前N大获取的,所以有归纳法可以考 阅读全文
posted @ 2020-06-18 12:03 WA自动机~ 阅读(190) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 30 下一页