首先考虑一下:如果我们知道要买(或送)哪几袋米,如何确保自己的钱够用? 显然应该买最便宜的几个,剩下的送。 所以我们可以枚举一个$p$,比$p$便宜的米用买的方式,比$p$贵的米用送的方式,不会遗漏最优解。把米按价格排序用背包就可以做到$O(n^2m)$。 #include<cstdio> #inc ...
分类:
其他好文 时间:
2020-03-03 11:06:27
阅读次数:
50
区间dp:在区间上进行动态规划,求解一段区间上的最优解。主要是通过合并小区间的最优解进而得出整个大区间上最优解的dp算法。 (此句抄袭这里:https://blog.csdn.net/qq_40772692/article/details/80183248) 例题:石子合并 【问题描述】 将n(1≤ ...
分类:
其他好文 时间:
2020-03-03 00:43:02
阅读次数:
82
三题都以分发糖果为背景,前两题比较简单,特别是第三题从前往后和从后往前进行两次动态规划的思想,有眼前一亮的感觉,非常巧妙,值得借鉴和思考。 ...
分类:
其他好文 时间:
2020-03-02 23:12:43
阅读次数:
105
给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 示例 2: 动态规划 这里可以用动态规划 Dynamic Programming 来解,维护一个一维数组 dp,其中 dp[i] 表示达到i位置时剩余 ...
分类:
其他好文 时间:
2020-03-02 12:50:20
阅读次数:
48
2020-03-01 23:08:51 问题描述: 你有一块棋盘,棋盘上有一些格子已经坏掉了。你还有无穷块大小为1 * 2的多米诺骨牌,你想把这些骨牌不重叠地覆盖在完好的格子上,请找出你最多能在棋盘上放多少块骨牌?这些骨牌可以横着或者竖着放。 输入:n, m代表棋盘的大小;broken是一个b * ...
分类:
其他好文 时间:
2020-03-01 23:24:28
阅读次数:
125
Q:给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n 1并且m 1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 ...
分类:
其他好文 时间:
2020-03-01 19:45:27
阅读次数:
75
题目描述 给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和。 示例: 解题方案一 (动态规划) 思路 假设数组名称为arr,结果数组为result 1. 当只有一个数字的时候,最大的连续数列只能是这个数字,所以序号为0的位置,最大值为 2,则有 2. 当有两个数字时,有两种情况 ...
分类:
其他好文 时间:
2020-03-01 14:31:04
阅读次数:
56
传送门:http://poj.org/problem?id=1958 汉诺塔:https://www.cnblogs.com/antineutrino/p/3334540.html 问题引入:这个在标准的三塔问题上又加了一维,我们先考虑三个塔是怎么计算的?可以具体地分成三个步骤: 1.假设A塔上有n ...
分类:
其他好文 时间:
2020-03-01 12:42:22
阅读次数:
63
在一些动态规划中状态转移方程是这样的: $m[i,j]=\min_{i < k \leq j}\left \{ m[i,k-1]+m[k,j]+c[i,j] \right \}$ 显而易见,这种方法的时间复杂度是$O(n^{3})$,如何去优化呢? 四边形不等式 通过四边形不等式的优化,可以进一步限 ...
分类:
其他好文 时间:
2020-03-01 00:01:50
阅读次数:
72
周数/细项|第二周 | 第三周 | 第四周 | 第五周 : : |: : | : : | : : | : : 所花时间(包括上课)| 4+3+3 | | | | | 代码量(行) | 19+26+38| | | | 博客量(篇) | 3| | | | 了解到的知识点 | Kadane算法(动态规划) ...
分类:
其他好文 时间:
2020-02-29 18:49:12
阅读次数:
64