自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无敌兔0x01

无欲速,无见小利。欲速,则不达;见小利,则大事不成。

  • 博客(172)
  • 资源 (2)
  • 问答 (5)
  • 收藏
  • 关注

原创 【递推型 dp】B016_LC_分汤(数学推导)

一、Problem有 A 和 B 两种类型的汤。一开始每种类型的汤有 N 毫升。有四种分配操作:提供 100ml 的汤A 和 0ml 的汤B。提供 75ml 的汤A 和 25ml 的汤B。提供 50ml 的汤A 和 50ml 的汤B。提供 25ml 的汤A 和 75ml 的汤B。当我们把汤分配给某人之后,汤就没有了。每个回合,我们将从四种概率同为0.25的操作中进行分配选择。如果汤的剩余量不足以完成某次操作,我们将尽可能分配。当两种类型的汤都分配完时,停止操作。注意不存在先分配100 ml

2020-07-31 23:07:26 227

原创 【递推型 dp】A015_LC_DI 序列的有效排列(根据前一个数得出后一个数)

一、Problem我们给出 S,一个源于 {‘D’, ‘I’} 的长度为 n 的字符串 。(这些字母代表 “减少” 和 “增加”。)有效排列 是对整数 {0, 1, …, n} 的一个排列 P[0], P[1], …, P[n],使得对所有的 i:如果 S[i] == ‘D’,那么 P[i] > P[i+1],以及;如果 S[i] == ‘I’,那么 P[i] < P[i+1]有多少个有效排列?因为答案可能很大,所以请返回你的答案模 10^9 + 7输入:"DID"输出:5解

2020-07-31 18:41:50 426

原创 【递推型 dp】A014_LC_学生出勤记录 II(三维 dp + 第三维表示末尾连续的 L)

一、Problem给定一个正整数 n,返回长度为 n 的所有可被视为可奖励的出勤记录的数量。 答案可能非常大,你只需返回结果 mod 109 + 7 的值。学生出勤记录是只包含以下三个字符的字符串:‘A’ : Absent,缺勤‘L’ : Late,迟到‘P’ : Present,到场如果记录不包含多于一个’A’(缺勤)或超过两个连续的’L’(迟到),则该记录被视为可奖励的。输入: n = 2输出: 8 解释:有8个长度为2的记录将被视为可奖励:"PP" , "AP", "PA",

2020-07-31 17:34:36 174

原创 【网格 dp】B010_LC_最大加号标志(暴力 / dp)

一、Problem在一个大小在 (0, 0) 到 (N-1, N-1) 的2D网格 grid 中,除了在 mines 中给出的单元为 0,其他每个单元都是 1。网格中包含 1 的最大的轴对齐加号标志是多少阶?返回加号标志的阶数。如果未找到加号标志,则返回 0。一个 k" 阶由 1 组成的“轴对称”加号标志具有中心网格 grid[x][y] = 1 ,以及4个从中心向上、向下、向左、向右延伸,长度为 k-1,由 1 组成的臂。下面给出 k" 阶“轴对称”加号标志的示例。注意,只有加号标志的所有网格要求为

2020-07-31 09:59:08 139

原创 【线性 dp】B008_LC_环绕字符串中唯一的子字符串(统计以 i 结尾的最长连续字符串的长度(暴力 / 优化)

一、Problem把字符串 s 看作是“abcdefghijklmnopqrstuvwxyz”的无限环绕字符串,所以 s 看起来是这样的:"…zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd…".现在我们有了另一个字符串 p 。你需要的是找出 s 中有多少个唯一的 p 的非空子串,尤其是当你的输入是字符串 p ,你需要输出字符串 s 中 p 的不同的非空子串的数目。示例 1:输入: "a"输出: 1解释: 字符串 S 中只有一个"

2020-07-30 23:03:05 207

原创 【前缀和】A012_LC_三个无重叠子数组的最大和(前缀和+枚举端点 / 优化)

一、Problem方法二:思路定义状态:f[i][j]f[i][j]f[i][j] 表示将 s[i:j]s[i:j]s[i:j] 打印出来的最少操作次数思考初始化:f[i][i]=1(i∈[0,n))f[i][i] = 1(i∈[0,n))f[i][i]=1(i∈[0,n))思考状态转移方程:f[i]f[i]f[i]思考输出:f[0][n−1]f[0][n-1]f[0][n−1]复杂度分析时间复杂度:O()O()O(),空间复杂度:O()O()O(),

2020-07-30 20:57:25 236

原创 【区间 dp】A027_LC_移除盒子 & 奇怪的打印机(移除连续的盒子+先移除中间的不相同再合并两端)

一、Problem给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色。你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续 k 个盒子(k >= 1),这样一轮之后你将得到 k*k 个积分。当你将所有盒子都去掉之后,求你能获得的最大积分和。输入:[1, 3, 2, 2, 2, 3, 4, 3, 1]输出:23解释:[1, 3, 2, 2, 2, 3, 4, 3, 1] ----> [1, 3, 3, 4, 3,

2020-07-30 15:35:54 194

原创 【线性 dp】A007_LC_自由之路(记忆化 / dp 模拟)

一、Problem视频游戏“辐射4”中,任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘,并使用表盘拼写特定关键词才能开门。给定一个字符串 ring,表示刻在外环上的编码;给定另一个字符串 key,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。最初,ring 的第一个字符与12:00方向对齐。您需要顺时针或逆时针旋转 ring 以使 key 的一个字符在 12:00 方向对齐,然后按下中心按钮,以此逐个拼写完 key 中的所有字符。旋转 rin

2020-07-30 10:49:51 214

原创 【前缀树】A001_LC_连接词(set+dfs / Trie 优化)

一、Problem给定一个不含重复单词的列表,编写一个程序,返回给定单词列表中所有的连接词。连接词的定义为:一个字符串完全是由至少两个给定数组中的单词组成的。输入: ["cat","cats","catsdogcats","dog","dogcatsdog","hippopotamuses","rat","ratcatdogcat"]输出: ["catsdogcats","dogcatsdog","ratcatdogcat"]解释: "catsdogcats"由"cats", "dog" 和

2020-07-30 09:20:24 215

原创 【数位 dp】不含连续1的非负整数(逆向构造 / dp)

一、Problem给定一个正整数 n,找出小于或等于 n 的非负整数中,其二进制表示不包含 连续的1 的个数。输入: 5输出: 5解释: 下面是带有相应二进制表示的非负整数<= 5:0 : 01 : 12 : 103 : 114 : 1005 : 101其中,只有整数3违反规则(有两个连续的1),其他5个满足规则说明: 1 <= n <= 109二、Solution方法一:逆向构造(超时)思路从右到左开始添加二进制位:如果第 iii 位是 0,前面

2020-07-29 21:18:39 259

原创 【前缀和】A011_LC_矩形区域不超过 K 的最大数值和 & 最大子矩阵(暴力前缀和 / 固定左右边界 + 二分)

一、Problem给定一个非空二维矩阵 matrix 和一个整数 k,找到这个矩阵内部不大于 k 的最大矩形和。输入: matrix = [[1,0,1],[0,-2,3]], k = 2输出: 2 解释: 矩形区域 [[0, 1], [-2, 3]] 的数值和是 2,且 2 是不超过 k 的最大数字(k = 2)。说明:矩阵内的矩形区域面积必须大于 0。如果行数远大于列数,你将如何解答呢?二、Solution方法一:前缀和思路复杂度分析时间复杂度:O()O()O(),空间

2020-07-29 17:08:27 326

原创 【搜索】B070_LC_“马”在棋盘上的概率(三维记忆化 / dp)

一、Problem已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始。即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1)。现有一个 “马”(也译作 “骑士”)位于 (r, c) ,并打算进行 K 次移动。如下图所示,国际象棋的 “马” 每一步先沿水平或垂直方向移动 2 个格子,然后向与之相垂直的方向再移动 1 个格子,共有 8 个可选的位置。现在 “马” 每一步都从可选的位置(包括棋盘外部的)中独立随机地选择一个进行移动,直到移动了 K 次或跳到了棋盘外面。求

2020-07-29 10:44:20 185

原创 【栈】B024_LC_移掉K位数字(维护单调递增序列)

一、Problem二、Solution方法一:单调递增栈思路维护一个单调递增序列(可保持数字最小)细节颇多…class Solution {public: string removeKdigits(string num, int k) { if (num.size() == k) return "0"; stack<char> st; for (char c : num) { while (!st.empty() &amp

2020-07-29 09:39:13 169

原创 【博弈】B005_LC_我能赢吗 & 预测赢家(状压记忆化+剪枝 | 枚举后手最差状态)

一、Problem在 “100 game” 这个游戏中,两名玩家轮流选择从 1 到 10 的任意整数,累计整数和,先使得累计整数和达到 100 的玩家,即为胜者。如果我们将游戏规则改为 “玩家不能重复使用整数” 呢?例如,两个玩家可以轮流从公共整数池中抽取从 1 到 15 的整数(不放回),直到累计整数和 >= 100。给定一个整数 maxChoosableInteger (整数池中可选择的最大数)和另一个整数 desiredTotal(累计和),判断先出手的玩家是否能稳赢(假设两位玩家游戏时

2020-07-28 22:32:13 185

原创 【线性 dp】A006_LC_马戏团人塔 & 堆箱子 & 俄罗斯套娃信封问题(LIS 变形 / 二分优化)

一、Problem有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上。出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一点。已知马戏团每个人的身高和体重,请编写代码计算叠罗汉最多能叠几个人。输入:height = [65,70,56,75,60,68] weight = [100,150,90,190,95,110]输出:6解释:从上往下数,叠罗汉最多能叠 6 层:(56,90), (60,95), (65,100), (68,110), (70,150), (75,190)提

2020-07-28 21:18:18 218

原创 【搜索】B069_LC_出界的路径数(三维记忆化 / dp)

一、Problem给定一个 m × n 的网格和一个球。球的起始坐标为 (i,j) ,你可以将球移到相邻的单元格内,或者往上、下、左、右四个方向上移动使球穿过网格边界。但是,你最多可以移动 N 次。找出可以将球移出边界的路径数量。答案可能非常大,返回 结果 mod 109 + 7 的值。输入: m = 2, n = 2, N = 2, i = 0, j = 0输出: 6解释:说明:球一旦出界,就不能再被移动回网格内。网格的长度和高度在 [1,50] 的范围内。N 在 [0,50] 的范围

2020-07-28 17:33:16 138

原创 【回溯】B015_LC_划分为k个相等的子集(得到每一次dfs的返回状态)

一、Problem给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4输出: True说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。提示:1 <= k <= len(nums) <= 160 < nums[i] < 10000二、Solution方法一:复杂度分析时间复杂度:O(

2020-07-28 12:07:49 168

原创 【图论】A048_LC_K 站中转内最便宜的航班(pq+bfs)

一、Problem有 n 个城市通过 m 个航班连接。每个航班都从城市 u 开始,以价格 w 抵达 v。现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到从 src 到 dst 最多经过 k 站中转的最便宜的价格。 如果没有这样的路线,则输出 -1。输入: n = 3, edges = [[0,1,100],[1,2,100],[0,2,500]]src = 0, dst = 2, k = 1输出: 200解释: 城市航班图如下从城市 0 到城市 2 在

2020-07-28 10:55:05 262

原创 【线性 dp】A006_LC_青蛙过河(记忆化 / map存储跳跃步数)

一、Problem一只青蛙想要过河。 假定河流被等分为 x 个单元格,并且在每一个单元格内都有可能放有一石子(也有可能没有)。 青蛙可以跳上石头,但是不可以跳入水中。给定石子的位置列表(用单元格序号升序表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一个石子上)。 开始时, 青蛙默认已站在第一个石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格1跳至单元格2)。如果青蛙上一步跳跃了 k 个单位,那么它接下来的跳跃距离只能选择为 k - 1、k 或 k + 1个单位。 另请注意,青蛙只

2020-07-28 10:01:07 208

原创 【搜索】B068_LC_迷路的机器人(非绝对意义上的回溯)

一、Problem二、Solution方法一:递归思路这题肯定不是回溯,复杂度分析时间复杂度:O()O()O(),空间复杂度:O()O()O(),方法二:复杂度分析时间复杂度:O()O()O(),空间复杂度:O()O()O(),...

2020-07-27 20:53:29 190

原创 【完全背包】B004_组合总和 Ⅳ(板子题)

一、Problem给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。nums = [1, 2, 3]target = 4所有可能的组合为:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)请注意,顺序不同的序列被视作不同的组合,因此输出为 7进阶:如果给定的数组中含有负数会怎么样?问题会产生什么变化?我们需要在题目中添加什么限制来允许负数的出现?二、Solution方法一:

2020-07-27 17:56:07 192

原创 【递推型 dp】B013_LC_只有两个键的键盘(暴搜 / 数学+dp)

一、Problem最初在一个记事本上只有一个字符 ‘A’。你每次可以对这个记事本进行两种操作:Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。Paste (粘贴) : 你可以粘贴你上一次复制的字符。给定一个数字 n 。你需要使用最少的操作次数,在记事本中打印出恰好 n 个 ‘A’。输出能够打印出 n 个 ‘A’ 的最少操作次数。输入: 3输出: 3解释:最初, 我们只有一个字符 'A'。第 1 步, 我们使用 Copy All 操作。第

2020-07-27 17:13:03 179

原创 【线性 dp】A005_LC_不同的子序列(记忆化 / dp 分类讨论)

一、Problem给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。题目数据保证答案符合 32 位带符号整数范围。示例 1:输入:S = "rabbbit", T = "rabbit"输出:3解释:如下图所示, 有 3 种可以从 S 中得到 "rabbit" 的方案。(上箭头符号 ^ 表示选取的字母)rabbbit^^^^ ^^rabbbit^^ ^^^^rabbbit^^^ ^^^二、Solution方法一:记忆化思路问题本质是抽出 s

2020-07-27 12:05:02 186

原创 【前缀和】B010_LC_连续的子数组和(map + 取模性质)

一、Problem给定一个包含 非负数 的数组和一个目标 整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,且总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。示例 1:输入:[23,2,4,6,7], k = 6输出:True解释:[2,4] 是一个大小为 2 的子数组,并且和为 6。示例 2:输入:[23,2,6,4,7], k = 6输出:True解释:[23,2,6,4,7]是大小为 5 的子数组,并且和为 42。说明:数组的长度不会超过

2020-07-27 09:23:36 168

原创 【网格 dp】A009_LC_矩阵中的最长递增路径(记忆化搜索)

一、Problem给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums = [ [9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9]。示例 2:输入: nums = [ [3,4,5], [3,2,6], [2,2,1]] 输出: 4 解释: 最长递增路径是 [3, 4

2020-07-26 23:05:27 288

原创 【01 dp】B012_LC_目标和(公式推导 + 01 背包)

一、Problem二、Solution…class Solution {public: int tar, ans; void dfs(int i, int cur, vector<int>& A) { if (i == A.size()) { if (cur == tar) ans++; return; } dfs(i+1, cur+A[i], A); dfs(i+1, cur-A[i], A); }

2020-07-26 22:06:26 197

原创 【网格 dp】A008_LC_最大矩形(存储每一列高度 + 检查左边一列 / 单调栈)

一、Problem给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。输入:[ ["1","0","1","0","0"], ["1","0","1","1","1"], ["1","1","1","1","1"], ["1","0","0","1","0"]]输出: 6二、Solution方法一:dp我们要知道一个矩形的面积,那长、宽、高这三个值是必不可少的;当我们枚举到某一个点 (i,j)(i, j)(i,j) 时,我们需要知道向上有

2020-07-26 18:21:33 222

原创 【递推型 dp】B012_LC_灯泡开关 IV(根据后一个状态退出当前状态)

一、Problem房间中有 n 个灯泡,编号从 0 到 n-1 ,自左向右排成一行。最开始的时候,所有的灯泡都是 关 着的。请你设法使得灯泡的开关状态和 target 描述的状态一致,其中 target[i] 等于 1 第 i 个灯泡是开着的,等于 0 意味着第 i 个灯是关着的。有一个开关可以用于翻转灯泡的状态,翻转操作定义如下:选择当前配置下的任意一个灯泡(下标为 i )翻转下标从 i 到 n-1 的每个灯泡翻转时,如果灯泡的状态为 0 就变为 1,为 1 就变为 0 。返回达成 targ

2020-07-26 17:02:51 195

原创 【树】B053_LC_好叶子节点对的数量(map + 后序遍历)

一、Problem给你二叉树的根节点 root 和一个整数 distance 。如果二叉树中两个 叶 节点之间的 最短路径长度 小于或者等于 distance ,那它们就可以构成一组 好叶子节点对 。返回树中 好叶子节点对的数量 。输入:root = [1,2,3,4,5,6,7], distance = 3输出:2解释:好叶子节点对为 [4,5] 和 [6,7] ,最短路径长度都是 2 。但是叶子节点对 [4,6] 不满足要求,因为它们之间的最短路径长度为 4 。二、Solution方

2020-07-26 15:38:02 248

原创 【前缀和】B009_LC_和为奇数的子数组数目(记录位置 i 前的奇偶和的个数)

一、Problem给你一个整数数组 arr 。请你返回和为 奇数 的子数组数目。由于答案可能会很大,请你将结果对 10^9 + 7 取余后返回。示例 1:输入:arr = [1,3,5]输出:4解释:所有的子数组为 [[1],[1,3],[1,3,5],[3],[3,5],[5]] 。所有子数组的和为 [1,4,9,3,8,5].奇数和包括 [1,9,3,5] ,所以答案为 4 。提示:1 <= arr.length <= 10^51 <= arr[i] <

2020-07-26 10:19:30 224

原创 【思维题】A040_LC_形成目标数组的子数组最少增加次数(从左推到右)

一、Problem给你一个整数数组 target 和一个数组 initial ,initial 数组与 target 数组有同样的维度,且一开始全部为 0 。请你返回从 initial 得到 target 的最少操作次数,每次操作需遵循以下规则:在 initial 中选择 任意 子数组,并将子数组中每个元素增加 1 。答案保证在 32 位有符号整数以内。输入:target = [1,2,3,2,1]输出:3解释:我们需要至少 3 次操作从 intial 数组得到 target 数组。[0

2020-07-26 10:08:02 282

原创 【思维题】B039_LC_字符串的好分割数目(左加右减)

一、Problem给你一个字符串 s ,一个分割被称为 「好分割」 当它满足:将 s 分割成 2 个字符串 p 和 q ,它们连接起来等于 s 且 p 和 q 中不同字符的数目相同。请你返回 s 中好分割的数目。输入:s = "aacaba"输出:2解释:总共有 5 种分割字符串 "aacaba" 的方法,其中 2 种是好分割。("a", "acaba") 左边字符串和右边字符串分别包含 1 个和 3 个不同的字符。("aa", "caba") 左边字符串和右边字符串分别包含 1 个和 3 个

2020-07-26 09:36:14 188

原创 【二分】A022_LC_分割数组的最大值(枚举每一份子数组的大小)

一、Problem给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7,2,5] 和 [10,8],因为此时这两个子数组各自的和的最大值为18,在所有情况

2020-07-25 22:16:14 162

原创 【线性 dp】B004_LC_删除与获得点数(打家劫舍思想 / 空间压缩)

一、Problem给定一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除每个等于 nums[i] - 1 或 nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。示例 1:输入: nums = [3, 4, 2]输出: 6解释: 删除 4 来获得 4 个点数,因此 3 也被删除。之后,删除 2 来获得 2 个点数。总共获得 6 个点数。示例 2输入

2020-07-25 18:47:44 182

原创 【01 dp】B011_LC_一和零(二维费用背包)

一、Problem在计算机界中,我们总是追求用有限的资源获取最大的收益。现在,假设你分别支配着 m 个 0 和 n 个 1。另外,还有一个仅包含 0 和 1 字符串的数组。你的任务是使用给定的 m 个 0 和 n 个 1 ,找到能拼出存在于数组中的字符串的最大数量。每个 0 和 1 至多被使用一次。输入: Array = {"10", "0001", "111001", "1", "0"}, m = 5, n = 3输出: 4解释: 总共 4 个字符串可以通过 5 个 0 和 3 个 1 拼出,

2020-07-25 11:12:42 193

原创 【区间 dp】B026_LC_最大平均值和的分组(分成 k-1 份 + 分成 1 份)

一、Problem我们将给定的数组 A 分成 K 个相邻的非空子数组 ,我们的分数由每个子数组内的平均值的总和构成。计算我们所能得到的最大分数是多少。注意我们必须使用 A 数组中的每一个数进行分组,并且分数不一定需要是整数。输入: A = [9,1,2,3,9]K = 3输出: 20解释: A 的最优分组是[9], [1, 2, 3], [9]. 得到的分数是 9 + (1 + 2 + 3) / 3 + 9 = 20.我们也可以把 A 分成[9, 1], [2], [3, 9].这样的分

2020-07-24 23:42:38 197

原创 【01 dp】B010_LC_分割等和子集(裸题)

一、Problem给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11]. 示例 2:输入: [1, 2, 3, 5]输出: false解释: 数组不能分割成两个元素和相等的子集.二、Solution方法一:dp首先如果结合的总和 s % 2

2020-07-24 19:05:14 152

原创 【划分 dp】B000_LC_猜数字大小 II(选小的或选大的 + 记录最坏花费)

一、Problem我们正在玩一个猜数游戏,游戏规则如下:我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字。每次你猜错了,我都会告诉你,我选的数字比你的大了或者小了。然而,当你猜了数字 x 并且猜错了的时候,你需要支付金额为 x 的现金。直到你猜到我选的数字,你才算赢得了这个游戏。n = 10, 我选择了8.第一轮: 你猜我选择的数字是5,我会告诉你,我的数字更大一些,然后你需要支付5块。第二轮: 你猜是7,我告诉你,我的数字更大一些,你支付7块。第三轮: 你猜是9,我告诉你,我的数

2020-07-24 18:16:31 241

原创 【线性 dp】B022_LC_最大整除子集(求最大子序列长度 + 记录路径)

一、Problem给出一个由无重复的正整数组成的集合,找出其中最大的整除子集,子集中任意一对 (Si,Sj) 都要满足:Si % Sj = 0 或 Sj % Si = 0。如果有多个目标子集,返回其中任何一个均可。示例 1:输入: [1,2,3]输出: [1,2] (当然, [1,3] 也正确)示例 2:输入: [1,2,4,8]输出: [1,2,4,8]二、Solution方法一:dp这不单单要知道序列的长度,也要知道该长度所代表的具体元素,故需要记录 dp 时的路径定义状

2020-07-24 17:12:02 200

原创 【线性 dp】A021_LC_解码方法 I~II(分别讨论 s[i-1])

一、Problem一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解释: 它可以解码为 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6) 。二、Solution方法一:

2020-07-24 12:21:17 309

初一数学知识点汇总图.7z

参与《原力计划【第二季】— 打卡挑战》的文章入选【打卡挑战周榜】的博主,即可获得此勋章。参与《原力计划【第二季】— 打卡挑战》的文章入选【打卡挑战周榜】的博主,即可获得此勋章。参与《原力计划【第二季】— 打卡挑战》的文章入选【打卡挑战周榜】的博主,即可获得此勋章。

2020-05-20

icpc2019.pdf

icpc 基础,推荐一下!

2020-04-03

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除