
动态规划
文章平均质量分 52
收录DP
小菜鸡加油吧
这个作者很懒,什么都没留下…
展开
-
【DP】- 第一周(基础DP) - day6 - 扑克牌
扑克牌分析题意由排列组合可以得到:CnmC^m_nCnm:从n张扑克里面找出m张牌所有的分法第i个人分的ai张牌,那么第i+1个人所有的分法为:Cn−aiai+1∗CnaiC_{n-a_i}^{a_{i+1}}*C_n^{a_{i}}Cn−aiai+1∗Cnai那么总分法=Cna1∗Cn−a1a2∗Cn−a1−a2a3∗...∗Cn−a1−...−amam总分法=C_n^{a_{1}}*C_{n-a_{1}}^{a_{2}}*C_{n-a_{1}-a_{2}}^{a_{3}}*...原创 2021-11-15 05:00:00 · 245 阅读 · 0 评论 -
【DP周】- 第一周(基础DP) - day5 - 三角形牧场
三角形牧场首先分析题目要计算三角形面积,给的条件有边肯定要想到海伦公式了p=(a+b+c)/2p=(a+b+c)/2p=(a+b+c)/2S=p∗(p−a)∗(p−b)∗(p−c)S=\sqrt{p*(p-a)*(p-b)*(p-c)}S=p∗(p−a)∗(p−b)∗(p−c)然后分析状态每个木板存在三种状态1.在第一条边上2.在第二条边上3.在第三条边上这三个状态直接决定了这三条边能不能构成三角形那么就可以列出状态转移f[i][j][k][l]表示前i条木板,三条边分别为原创 2021-11-12 05:00:00 · 262 阅读 · 0 评论 -
【DP周】- 第一周(基础DP) - day4 - Making the Grade
Making the Grade根据题目理解#include <iostream>#include <algorithm> #define ll long long#define Abs(a) ((a) > 0 ? (a) : -(a))using namespace std;const int N = 2021;int n;ll a[N];ll b[N];ll dp[N][N];bool cmp(ll a, ll b){ return a原创 2021-11-11 05:00:00 · 332 阅读 · 0 评论 -
【DP周】- 第一周(背包) - day3 - 多米诺骨牌
多米诺骨牌首先分析状态表示:分析:每个骨牌可以旋转一次,找最小的旋转次数使得上面减下面的绝对值最小每个骨牌可以旋转一次可以看出是01背包如果我们直接把状态表示定为前i个物品在差值的绝对值为j时最小的旋转次数,这个差值就会有很多种情况,很难枚举(因为太菜只能)再来分析:根据题意可以分析得出,无论怎样旋转,总点数是不变的,那我就可以根据 ”总和是不变的“ 和 “上面那一行的和” 来表示下一行的和,这样就可以将情况减少很多,变为了6*n种情况那么最终的状态表示就为前i个物品上行的和为j时的原创 2021-11-09 05:00:00 · 204 阅读 · 0 评论 -
【DP周】- 第一周(背包) - day2 - 金明的预算方案
金明的预算方案每个物品只能选一件,不用说绝对01背包不过这个是有限制的物品分了主件附件,一个主件最多有两个附件,也就是说你输入的时候就会最多只输入两个附件不要想太多也就是01背包的变形01背包是分成了两个状态现在我们可以分成五个状态:1.在i的时候,选择这个主件2.选择这个主件和第一个附件3.选择这个主件和第二个附件4.选择这个主件和第一第二个附件5.不选择这个主件从这5个状态找到最大的下面看代码理解#include <iostream>using names原创 2021-11-07 05:00:00 · 238 阅读 · 0 评论 -
【DP周】- 第一周(背包) - day1 - 垃圾陷阱
垃圾陷阱题目:根据dalao分析dp的方法首先要状态表示首先看题目“每种垃圾扔一次”,直接可以定案是01背包了。其次看元素,时间,高度,生命,数量,经过分析可以判定时间可以和生命是同一种类型的元素那么元素就成了三个,时间,高度,数量一开始下意识我想到的状态表示是 前i个垃圾不超过j时间是达到的最高高度后来写的时候碰见了很多解决不了的问题(我太菜),于是我又换了思路前i个垃圾在高度为j时存活的最长时间接下来状态分析在第i个垃圾处划分为两个部分将垃圾摞在脚下将垃圾吃掉dp[i][j原创 2021-11-07 00:00:00 · 102 阅读 · 0 评论 -
试题 算法训练 未名湖边的烦恼
试题 算法训练 未名湖边的烦恼资源限制时间限制:1.0s 内存限制:256.0MB问题描述 每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式 两个整数,表示m和n输出格式 一个整数,表示队伍的排原创 2021-04-10 10:42:31 · 244 阅读 · 0 评论 -
背包问题(背包九讲)
动态规划 01背包01背包的状态转移方程f[i,j] = Max{f[i-1,j-wi]+pi(j>=wi),f[i-1,j]}f[i,j]表示在前i件物品中选择若干件放在承重为j的背包中,可以取得的最大价值。pi表示第i件物品的价值。决策:为了背包中物品总价值最大化,第 i件物品应该放入背包中吗 ?题意描述:假设山洞里共有a,b,c,d ,e这5件宝物(不是5种宝物),它们的重量分别是2,2,6,5,4,它们的价值分别是6,3,5,4,6,现在给你个承重为10的背包, 怎么装背包,可以才原创 2021-02-22 11:08:30 · 1586 阅读 · 0 评论 -
秘密行动
问题描述 小D接到一项任务,要求他爬到一座n层大厦的顶端与神秘人物会面。这座大厦有一个神奇的特点,每层的高度都不一样,同时,小D也拥有一项特殊能力,可以一次向上跳跃一层或两层,但是这项能力无法连续使用。已知向上1高度消耗的时间为1,跳跃不消耗时间。由于事态紧急,小D想知道他最少需要多少时间到达顶层。输入格式 第一行包含一个整数n,代表楼的高度。接下来n行每行一个整数ai,代表i层的楼层高度(ai <= 100)。输出格式 输出1行,包含一个整数,表示所需的最短时间。样例输入53原创 2021-03-03 15:07:46 · 205 阅读 · 2 评论 -
买卖股票的最佳时机_DP
力扣121. 买卖股票的最佳时机你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。实例 :输入7 1 5 3 6 4输出5解题思路:动态规划解法:首先找好状态转移,第i天卖出或不卖;卖出:prices[i]-前i天最小的价格不卖:prices[i-1]其次列出状态转移方程:dp[i]=max(dp[i-1],prices[i]-(前i天最原创 2021-03-28 15:23:27 · 99 阅读 · 0 评论