
dp
ln2037
用心雕琢我的艺术品。
展开
-
LeetCode 96. 不同的二叉搜索树 【DP】
给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树:1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \2 1 2 3n原创 2021-01-31 22:18:39 · 73 阅读 · 1 评论 -
LeetCode 647. 回文子串 【双指针】
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:“abc”输出:3解释:三个回文子串: “a”, “b”, “c”示例 2:输入:“aaa”输出:6解释:6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa”提示:输入的字符串长度不会超过 1000 。双倍经验双倍经验。class Solution {public: int get(str原创 2021-01-31 22:15:05 · 119 阅读 · 0 评论 -
LeetCode 5. 最长回文子串 【DP】
给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”示例 3:输入:s = “a”输出:“a”示例 4:输入:s = “ac”输出:“a”提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成dp[i][j]代表下标为i和j之间的子串是否是回文串。class Solution {p原创 2021-01-31 22:13:10 · 106 阅读 · 0 评论 -
LeetCode 62. 不同路径 【DP】
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向下 -> 向下向下 -> 向下 -> 向右向下 -> 向右 ->原创 2021-01-31 22:11:01 · 74 阅读 · 0 评论 -
LeetCode 309. 最佳买卖股票时机含冷冻期 【DP】
给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]三种状态:当天不持股当天持股当天持股又卖出class Solution {pu原创 2021-01-31 22:10:04 · 68 阅读 · 0 评论 -
LeetCode 416. 分割等和子集 【DP】
给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例 2:输入: [1, 2, 3, 5]输出: falseclass Solution {public: static const int maxn = 1e5 + 10; bool dp[ma原创 2021-01-24 22:10:04 · 58 阅读 · 0 评论 -
LeetCode 139. 单词拆分 【DP】
给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。示例 2:输入: s = “applepenapple”, wordDict = [原创 2021-01-24 22:08:52 · 89 阅读 · 0 评论 -
LeetCode 198. 打家劫舍 【DP】
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输入:[2,7,9,3,原创 2021-01-24 22:02:23 · 75 阅读 · 0 评论 -
LeetCode 300. 最长递增子序列 【DP】
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3]输出:4示例 3:输入:nums = [7,7,7,7,7,7,7]原创 2021-01-24 22:00:05 · 315 阅读 · 0 评论 -
LeetCode 494. 目标和【DP】
给定一个非负整数数组,a1, a2, …, an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。示例:输入:nums: [1, 1, 1, 1, 1], S: 3输出:5解释:-1+1+1+1+1 = 3+1-1+1+1+1 = 3+1+1-1+1+1 = 3+1+1+1-1+1 = 3+1+1+1+1-1 = 3一共有5种方法让最终目标和为3。提示原创 2021-01-24 21:55:32 · 80 阅读 · 0 评论 -
LeetCode 221. 最大正方形 【DP】
在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。示例 1:输入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]输出:4示例 2:输入:matrix = [[“0”,“1”],[“1”,“0”]]输出:1示例 3:输入:matrix = [[“0”]]输出:0提示:m == matrix.le原创 2021-01-22 23:15:11 · 78 阅读 · 0 评论 -
LeetCode 279 完全平方数【DP】
完全平方数给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.class Solution { static const int maxn = 1e5 + 10; int dp[maxn];public: int numSquare.原创 2021-01-17 22:07:03 · 70 阅读 · 0 评论 -
LeetCode 152. 乘积最大子数组【DP】
给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。维护一个最大值,不断更新。因为有负数,同时再维护一个最小值。class Solution {public: static const int maxn = 1e原创 2020-12-18 16:18:36 · 117 阅读 · 1 评论 -
最长上升子序列详解(n方+nlogn)
先说n方的算法。定义一个二维数组dp[maxn].dp[i]代表结尾下标为i时最长最长上升子序列的长度。若要确定dp[i]的值,只需要遍历dp[1] to dp[i - 1]即可,时间复杂度n方。状态转移方程:dp[i] = max(dp[i], dp[j] + 1) //a[i] > a[j]代码:#include <iostream>#include <algorithm>#include <set>#include <stack&原创 2020-11-27 20:43:26 · 857 阅读 · 0 评论 -
P1077 摆花【DP】
题目描述小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共mmm盆。通过调查顾客的喜好,小明列出了顾客最喜欢的nnn种花,从111到nnn标号。为了在门口展出更多种花,规定第iii种花不能超过aia_iai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。试编程计算,一共有多少种不同的摆花方案。输入格式第一行包含两个正整数nnn和mmm,中间用一个空格隔开。第二行有nnn个整数,每两个整数之间用一个空格隔开,依次表示a1,a2,…,ana_1,a_2,…,a原创 2020-10-07 20:12:23 · 392 阅读 · 0 评论 -
P1020 导弹拦截 【思维】
题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是≤50000 \le 50000≤50000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。输入格式111行,若干个整数(个数≤1000原创 2020-10-06 18:24:32 · 93 阅读 · 0 评论 -
P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles 【DP】
题目描述观察下面的数字金字塔。写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 7 3 8 8 1 0 2 7 4 44 5 2 6 5在上面的样例中,从 7→3→8→7→57 \to 3 \to 8 \to 7 \to 57→3→8→7→5 的路径产生了最大输入格式第一个行一个正整数 rrr ,表示行的数目。后面每行为这个数字金字塔特定行包含的整数。输出格式单原创 2020-10-05 21:19:31 · 690 阅读 · 0 评论 -
P1802 5倍经验日 【DP】
题目背景现在乐斗有活动了!每打一个人可以获得5倍经验!absi2011却无奈的看着那一些比他等级高的好友,想着能否把他们干掉。干掉能拿不少经验的。题目描述现在absi2011拿出了x个迷你装药物(嗑药打人可耻….),准备开始与那些人打了由于迷你装一个只能管一次,所以absi2011要谨慎的使用这些药,悲剧的是,没到达最少打败该人所用的属性药了他打人必输>.<所以他用2个药去打别人,别人却表明3个药才能打过,那么相当于你输了并且这两个属性药浪费了。现在有n个好友,有输掉拿的经验、赢了拿的原创 2020-10-05 21:18:47 · 942 阅读 · 0 评论 -
P1616 疯狂的采药 【DP】
题目背景此题为纪念 LiYuxiang 而生。题目描述LiYuxiang 是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同种类的草药,采每一种都需要一些时间,每一种也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”如果你是 LiYuxiang,你能完成这个任务吗?此原创 2020-10-05 21:18:07 · 111 阅读 · 0 评论 -
P1002 过河卒 【DP】
题目描述棋盘上 AAA 点有一个过河卒,需要走到目标 BBB 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 CCC 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,AAA 点 (0,0)(0, 0)(0,0)、BBB 点 (n,m)(n, m)(n,m),同样马的位置坐标是需要给出的。现在要求你计算出卒从 AAA 点能够到达 BBB 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。输入格式一行四个正整数,分别原创 2020-10-05 21:17:07 · 1371 阅读 · 0 评论 -
P2822 组合数问题 【组合数 + DP】
题目描述组合数 (nm)\binom{n}{m}(mn) 表示的是从 nnn 个物品中选出 mmm 个物品的方案数。举个例子,从 (1,2,3)(1,2,3)(1,2,3) 三个物品中选择两个物品可以有 (1,2),(1,3),(2,3)(1,2),(1,3),(2,3)(1,2),(1,3),(2,3) 这三种选择方法。根据组合数的定义,我们可以给出计算组合数 (nm)\binom{n}{m}(mn) 的一般公式:(nm)=n!m!(n−m)!\binom{n}{m}=\frac{n!}{m!(n原创 2020-10-01 18:53:35 · 311 阅读 · 0 评论 -
P2789 直线交点数 【DP】
题目描述平面上有N条直线,且无三线共点,那么这些直线能有多少不同的交点数?输入格式一个正整数N输出格式一个整数表示方案总数输入输出样例输入 #14输出 #15说明/提示N<=25#include <iostream>#include <algorithm>using namespace std;typedef long long ll;ll dp[40][100000];int n;int main() { cin >>原创 2020-09-28 16:44:51 · 315 阅读 · 0 评论 -
P1990 覆盖墙壁 【DP】
题目描述你有一个长为N宽为2的墙壁,给你两种砖头:一个长2宽1,另一个是L型覆盖3个单元的砖头。如下图:0 00 00砖头可以旋转,两种砖头可以无限制提供。你的任务是计算用这两种来覆盖N2的墙壁的覆盖方法。例如一个23的墙可以有5种覆盖方法,如下:012 002 011 001 011012 112 022 011 001注意可以使用两种砖头混合起来覆盖,如2*4的墙可以这样覆盖:01120012给定N,要求计算2N的墙壁的覆盖方法。由于结果很大,所以只要求输出最后4位。例如213的原创 2020-09-22 19:27:30 · 246 阅读 · 0 评论 -
P3143 [USACO16OPEN]Diamond Collector S 【DP】
题目描述Bessie the cow, always a fan of shiny objects, has taken up a hobby of mining diamonds in her spare time! She has collected NNN diamonds (N≤50,000N \leq 50,000N≤50,000) of varying sizes, and she wants to arrange some of them in a pair of display cases原创 2020-09-09 16:48:52 · 288 阅读 · 0 评论 -
P1719 最大加权矩形【前缀和】
题目描述为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电脑组的课余运动场地,听说她们都是电脑组的高手,校长没有马上答应他们,而是先给她们出了一道数学题,并且告诉她们:你们能获得的运动场地的面积就是你们能找到的这个最大的数字。校长先给他们一个N*N矩阵。要求矩阵中最大加权矩形,即矩阵的每一个元素都有一权值,权值定义在整数集上。从中找一矩形,矩形大小无限制,是其中包含的所有元素的和最大 。矩阵的每个元素属于[-127,原创 2020-09-08 14:23:24 · 247 阅读 · 0 评论 -
P2004 领地选择 【前缀和】
题目描述作为在虚拟世界里统帅千军万马的领袖,小 Z 认为天时、地利、人和三者是缺一不可的,所以,谨慎地选择首都的位置对于小 Z 来说是非常重要的。首都被认为是一个占地 C×CC\times CC×C 的正方形。小 Z 希望你寻找到一个合适的位置,使得首都所占领的位置的土地价值和最高。输入格式第一行三个整数 N,M,CN,M,CN,M,C,表示地图的宽和长以及首都的边长。接下来 NNN 行每行 MMM 个整数,表示了地图上每个地块的价值。价值可能为负数。输出格式一行两个整数 X,YX,YX,Y,原创 2020-09-08 14:47:15 · 338 阅读 · 0 评论 -
C 算概率
题目描述牛牛刚刚考完了期末,尽管 牛牛 做答了所有 n\text{}nn 道题目,但他不知道有多少题是正确的。不过,牛牛 知道第 i\text{}ii 道题的正确率是 pip_ipi。牛牛 想知道这 n 题里恰好有 0,1,…,n0,1,\dots,n0,1,…,n 题正确的概率分别是多少,对 109+710^9+7109+7 取模。对 109+710^9+7109+7 取模的含义是:对...原创 2020-02-09 13:09:35 · 263 阅读 · 0 评论 -
P1896 [SCOI2005]互不侵犯 【状压dp】
题目描述在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。注:数据有加强(2018/4/25)输入格式只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N)输出格式所得的方案数输入输出样例输入 #13 2输出 #116#...原创 2020-01-18 16:56:40 · 259 阅读 · 0 评论 -
P1879 [USACO06NOV]玉米田Corn Fields 【状压dp】
题目描述Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yummy corn for the cows on a number of squares. Regretta...原创 2020-01-17 14:40:28 · 212 阅读 · 2 评论 -
Codeforces Round 80 C. Two Arrays
C. Two ArraysYou are given two integers nand m. Calculate the number of pairs of arrays (a,b)such that:the length of both arrays is equal to m;each element of each array is an integer between 1 a...原创 2020-01-15 10:33:43 · 324 阅读 · 0 评论