--------搜索算法--------
Neo__Z
这个作者很懒,什么都没留下…
展开
-
bzoj4374 Little Elephant and Boxes【动态规划+折半搜索】
解题思路:开始以为直接求出期望得到的钱和钻石数,再背包dp一波就行了,但看了答案不是整数就知道不行了。还是要根据期望的定义,列出所有方案求解才行。但直接求出所有方案是不现实的,看了n=30,应该是折半搜索。 所以我们先固定一维,用f[i][j][k]表示前i个物品取j个,花了k个钻石所消耗的最小钱数,这个很容易dp求出,可以见代码。再折半搜索,分别取第1~n/2,第n/2+1~n个盒子,把两边的方原创 2017-12-27 09:40:48 · 426 阅读 · 0 评论 -
bzoj2824 铁盘整理【迭代加深搜索】
解题思路: 先把数组离散化。 可以看出最多2n-2步可以排完(i从n到2,每次把第i大的数转到第一位,再转到第i位)。 考虑迭代加深搜索,那如何制定估价函数呢? 注意到翻转a[1]~a[i],只会改变a[i]与a[i+1]的差,而排好序的数列abs(a[i+1]-a[i])1,就至少要翻转一次,这样估价函数就出来了。 #include using namespace std; in原创 2018-01-04 21:50:15 · 338 阅读 · 0 评论 -
bzoj5290: [Hnoi2018]道路【树形dp/记忆化搜索】
传送门 解题思路: 考试时刚看以为是神仙题,于是开始打dfs暴力,然后猛然发现可以记忆化,然后就没有然后了……这不是普及组dp吗? f[i][x][y]f[i][x][y]f[i][x][y]表示以iii为根的子树,上面有xxx条公路,yyy条铁路未翻新的最优值,记忆化搜索即可。 #include<bits/stdc++.h> #define ll long long us...原创 2018-05-08 17:42:17 · 262 阅读 · 0 评论