随笔分类 - 动态规划
奇妙的算法
摘要:链接:https://ac.nowcoder.com/acm/contest/11230/D来源:牛客网 题目描述 勇敢的牛牛得到了一个数列 B,他认为这个数列不够可爱,于是他决定重新创造一个数列 A,规则如下。 对于所有的 i,需要保证 Ai 在 [1,Bi] 这个区间内。 现在,我们称数列 A
阅读全文
摘要:前言 二进制优化,将每类物品的数量按2的整数次幂进行拆分,因为任何一个十进制数都可以用若干个二进制数来凑成 时间复杂度:O(NlogSV) 题目描述 有 N 种物品和一个容量是 V 的背包。 第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使物品体积总和不
阅读全文
摘要:前言 同余定理 数论中的重要概念。给定一个正整数m,如果两个整数a和b满足a-b能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m)。对模m同余是整数的一个等价关系。 题目描述 给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含
阅读全文
摘要:题目描述 给你一个下标从 0 开始的二进制字符串 s 和两个整数 minJump 和 maxJump 。一开始,你在下标 0 处,且该位置的值一定为 '0' 。当同时满足如下条件时,你可以从下标 i 移动到下标 j 处: i + minJump <= j <= min(i + maxJump, s.
阅读全文
摘要:题目描述 有一个长度为 arrLen 的数组,开始有一个指针在索引 0 处。每一步操作中,你可以将指针向左或向右移动 1 步,或者停在原地(指针不能被移动到数组范围外)。给你两个整数 steps 和 arrLen ,请你计算并返回:在恰好执行 steps 次操作以后,指针仍然指向索引 0 处的方案数
阅读全文
摘要:题目描述 在一个小城市里,有 m 个房子排成一排,你需要给每个房子涂上 n 种颜色之一(颜色编号为 1 到 n )。有的房子去年夏天已经涂过颜色了,所以这些房子不需要被重新涂色。我们将连续相同颜色尽可能多的房子称为一个街区。(比方说 houses = [1,2,2,3,3,2,1,1] ,它包含 5
阅读全文
摘要:题目描述 给你一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除每个等于 nums[i] - 1 或 nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。示例 1
阅读全文
摘要:题目描述 给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下
阅读全文
摘要:题目描述 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3 分析 这题可以通过枚举每
阅读全文
摘要:题目描述 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目。 小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们研究最长公共上升子序列了。 小沐沐说,对于两个数列 A 和 B ,如果它们都包含一段位置不一定连续的数,且数值是严格递增的,那么称这一段数是两个数列的公共上升子序列
阅读全文
摘要:问题描述 你总共有n 万元,希望申请国外的大学,要申请的话需要交一定的申请费用,给出每个大学的申请费用以及你得到这个大学offer的成功概率,大学的数量是 m。如果经济条件允许,你可以申请多所大学。找到获得至少一份工作的最高可能性。 0<=n<=10000,0<=m<=10000 样例 样例 1:
阅读全文
摘要:题目描述 给出 n 个物品, 以及一个数组, nums[i]代表第i个物品的大小, 保证大小均为正数并且没有重复, 正整数 target 表示背包的大小, 找到能填满背包的方案数。 每一个物品可以使用无数次 样例 样例1 输入: nums = [2,3,6,7] 和 target = 7 输出: 2
阅读全文
摘要:题目描述 给定 n 种物品, 每种物品都有无限个. 第 i 个物品的体积为 A[i], 价值为 V[i]. 再给定一个容量为 m 的背包. 问可以装入背包的最大价值是多少? 不能将一个物品分成小块. 放入背包的物品的总大小不能超过 m. 样例 样例 1: 输入: A = [2, 3, 5, 7],
阅读全文
摘要:题目描述 有 n 个物品和一个大小为 m 的背包. 给定数组 A 表示每个物品的大小和数组 V 表示每个物品的价值. 问最多能装入背包的总价值是多大? A[i], V[i], n, m 均为整数 你不能将物品进行切分 你所挑选的要装入背包的物品的总大小不能超过 m 每个物品只能取一次 样例 样例 1
阅读全文
摘要:题目描述 在n个物品中挑选若干物品装入背包,最多能装多满?假设背包的大小为m,每个物品的大小为A[i] 你不可以将物品进行切割。 样例 样例 1: 输入: [3,4,8,5], backpack size=10 输出: 9 样例 2: 输入: [2,3,5,7], backpack size=12
阅读全文
摘要:题目描述 你跟你的朋友在玩一个卡牌游戏,总共有 n 张牌。每张牌的成本为 cost[i] 并且可以对对手造成 damage[i] 的伤害。你总共有 totalMoney 元并且需要造成至少 totalDamage 的伤害才能获胜。每张牌只能使用一次,判断你是否可以取得胜利。 样例 样例1 输入: c
阅读全文
摘要:题目描述 给定n本书,第i本书有[i]页。有k个人来抄这些书。 这些书排成一行,每个人都可以索取连续一段的书。例如,一个复印机可以连续地将书从第i册复制到第j册,但是他不能复制第1册、第2册和第4册(没有第3册)。 他们在同一时间开始抄书,每抄一页书都要花1分钟。为了让最慢的复印机能在最早的时间完成
阅读全文
摘要:题目描述: 给定一个自然数 N,要求把 N拆分成若干个正整数相加的形式,参与加法运算的数可以重复。 注意: 拆分方案不考虑顺序; 至少拆分成 2个数的和。 求拆分的方案数 mod2147483648的结果。 输入格式 一个自然数 N。 输出格式 输入一个整数,表示结果。 数据范围 1≤N≤4000
阅读全文
摘要:题目描述: 给定 N 个正整数 A1,A2,…,AN,从中选出若干个数,使它们的和为 M,求有多少种选择方案。 输入格式 第一行包含两个整数 N和 M。 第二行包含 N个整数,表示 A1,A2,…,AN。 输出格式 包含一个整数,表示可选方案数。 数据范围 1≤N≤100 1≤M≤10000, 1≤
阅读全文
摘要:题目描述: 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有 NNN 种蒸笼,其中第 iii 种蒸笼恰好能放 Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。 每当有顾客想买 X 个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有 X 个包子。比如一共有 3 种蒸笼
阅读全文