摘要:
地址 https://www.papamelon.com/problem/352 解答 由于已经确定是2排待填充的地板,那么填充方法就是两种 如图 又已知待填充的地板长度为n,题意可以转换为 要么选择1个竖方案填充要么选择2个横方案 ,问有达到长度n有多少种选择。 再推断一步 使用1代替1个竖砖块方 阅读全文
摘要:
地址 https://www.papamelon.com/problem/321 解答 首先是尝试把该问题转化成蒙德里安的梦想那道题,但是由于复杂度是2n*2n,当n为15的时候就超时了。 后面改成了记忆化搜索.可以去掉一些不可能达到的状态搜索,OK了。 大概这就是记忆化搜索相对直接递推DP公式的优 阅读全文
摘要:
地址 https://leetcode-cn.com/problems/longest-valid-parentheses/ 给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例 1: 输入:s = "(()" 输出:2 解释:最长有效括号子串是 "() 阅读全文
摘要:
地址 https://www.papamelon.com/problem/318 按照题意的 dp[n]=dp[n-1]+dp[n-2] 可以得到正确答案,但是n为10^16 该算法复杂度为 O(n) 会TLE 根据矩阵相乘的知识可以得到 |Fn+2| = |1 1||Fn+1| |Fn+1| = 阅读全文
摘要:
地址 https://www.papamelon.com/problem/260 贪心方法不对。 本体属于二分章节 尝试下将选择K个物品的重量价值比控制在X内 (V1+V2+V3+......+Vi) / (W1+W2+W3+......+Wi) = x 也就是 ∑Vi/ ∑Wi = x 该不等式转 阅读全文
摘要:
地址 https://www.papamelon.com/problem/257 二分查找模板题 二分有两个模板 一个是找到符合查询数字的下边界<= 一个是找到符合查询数字的上边界>= 记熟会方便很多. 本题是查找第一个大于等于k的数字 是下边界 #include <iostream> using 阅读全文
摘要:
地址 https://www.papamelon.com/problem/327 由于题目有两个排序关键字长度和重量,只有两个均大于等于前一个才能达到最小费用 先尝试按照某一个关键字排序 例子中的 4 5 2 3 1 9 2 1 5 4 排序后就变成 1 2 3 4 5 4 1 5 9 2 这时候我 阅读全文
摘要:
地址 https://www.papamelon.com/problem/328 解答 以6个接口为例 左端 1 2 3 4 5 6端口对应 右端 4 2 6 3 1 5 端口 如图 左1连接的是右5 如果选择这条接线 那么左端其他接口就不能连接右端5以前的接口了,否则就会接线交叉。 按照这个规则, 阅读全文
摘要:
地址 https://www.papamelon.com/problem/217 解答 将切割逆向看,可以看做是将多段木棒粘合起来。粘合的成本是两个木棒的长度 可以看到处于树最底层的木棒长度在每次粘合中都加入了进去。 所以底层的节点应该越短越好,比如5. 这就是一种贪心思想。具体原理可以参考哈夫曼树 阅读全文
摘要:
地址 https://www.papamelon.com/problem/212 解答 贪心算法 选择符合条件中区间结束比较早的那个区间。 可以证明,同样的选择区间中,选择较早结束的区间至少不会得到比选择较晚结束的区间更差的结果。 基于以上规则,我们将区间按照结束时间排序。 每次选择起始时间比当前结 阅读全文