
dp(动态规划)
文章平均质量分 70
动态规划练习题解
辰chen
上海科技大学计算机科学与技术专业学硕
展开
-
每日一题(day5)
你好,我是辰chen,一个正在考研途中的 sophomore dog目前每日一题主要来自于 leetcode,当然也可能来自洛谷或其他刷题平台,每日一题专栏地址:每日一题欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容每日一题我会给出两种代码,C版以及 Python版,刷题的目的是为了考研的算法题以及机试(或手写代码)这也是为什么不用 C++ 而用 C,Python版代码是为了提高语言熟练度(以后开发大概率用的是 Python坚持打卡!踏踏实实走好每一步以下的几个专栏是本人比较满意原创 2022-04-17 16:17:04 · 2371 阅读 · 0 评论 -
每日一题(day4)
你好,我是辰chen,一个正在考研途中的 sophomore dog目前每日一题主要来自于 leetcode,当然也可能来自洛谷或其他刷题平台,每日一题专栏地址:每日一题欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容每日一题我会给出两种代码,C版以及 Python版,刷题的目的是为了考研的算法题以及机试(或手写代码)这也是为什么不用 C++而用 C,Python版代码是为了提高语言熟练度(以后开发大概率用的是 Python坚持打卡!踏踏实实走好每一步以下的几个专栏是本人比较满意的原创 2022-04-16 14:22:33 · 2271 阅读 · 0 评论 -
每日一题(day3)
你好,我是辰chen,一个正在考研途中的 sophomore dog目前每日一题主要来自于 leetcode,当然也可能来自洛谷或其他刷题平台,每日一题专栏地址:每日一题欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容每日一题我会给出两种代码,C版以及 Pytho版,刷题的目的是为了考研的算法题以及机试(或手写代码)这也是为什么不用 C++ 而用 C,Python版代码是为了提高语言熟练度(以后开发大概率用的是 Python坚持打卡!踏踏实实走好每一步以下的几个专栏是本人比较满意的原创 2022-04-15 19:25:23 · 2558 阅读 · 0 评论 -
每日一题(day2)
你好,我是辰chen,一个正在考研途中的大二狗目前每日一题主要来自于 leetcode,当然也可能来自洛谷或其他刷题平台,每日一题专栏地址:每日一题欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容每日一题我会给出两种代码,C版以及Python版,刷题的目的是为了考研的算法题以及机试(或手写代码)这也是为什么不用 C++ 而用 C,Python版代码是为了提高语言熟练度(以后开发大概率用的是 Python 坚持打卡!踏踏实实走好每一步原创 2022-04-14 08:59:55 · 590 阅读 · 0 评论 -
每日一题(day1)
你好,我是辰chen,一个正在考研途中的大二狗目前每日一题主要来自于 leetcode,当然也可能来自洛谷或其他刷题平台,每日一题专栏地址:每日一题欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容每日一题我会给出两种代码,C版以及Python版,刷题的目的是为了考研的算法题以及机试(或手写代码)这也是为什么不用 C++而用 C,Python版代码是为了提高语言熟练度(以后开发大概率用的是 Python坚持打卡!踏踏实实走好每一步原创 2022-04-13 15:47:12 · 2401 阅读 · 0 评论 -
01背包补题(一)
动态规划——01背包的一些习题,包含如下题目:P1048 采药P2871 [USACO07DEC]Charm Bracelet SP1049 装箱问题P1060 开心的金明P1164 小A点菜P1510 精卫填海P2639 [USACO09OCT]Bessie’s Weight Problem GP2925 [USACO08DEC]Hay For Sale SP1926 小书童——刷题大军P1802 5倍经验日P1734 最大约数和P2392 kkksc03考前临时抱佛脚刷题记录,原创 2022-03-29 11:02:51 · 2088 阅读 · 0 评论 -
多重背包问题与优化(裸题)
本题讲解多重背包问题的裸题,根据三个不同的数据范围给出不同的代码和优化思路:二进制优化以及单调队列(滑动窗口)优化,同时简单介绍动态规划问题常用的两种优化维度的方法:滚动数组以及拷贝数组的优化方法,整体难度较大。原创 2022-03-13 18:15:27 · 1064 阅读 · 0 评论 -
HDU 3506 Monkey Party(动态规划)
文章目录题目AC代码题目本题链接:Monkey Party本博客给出本题截图:AC代码代码:#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 2010, INF = 0x3f3f3f3f;int f[N][N];int t[N];int s[N];int w[N][N];int main(){ .原创 2021-11-29 13:29:15 · 672 阅读 · 0 评论 -
HDU 4632 Palindrome subsequence(动态规划)
文章目录题目AC代码题目本题链接:Palindrome subsequence本博客给出本题截图:AC代码#include <iostream>#include <cstring>#include <cstdio>#include <string>#include <algorithm>using namespace std;const int N = 1010, mol = 10007;int f[N][N];.原创 2021-11-29 13:25:33 · 671 阅读 · 2 评论 -
HDU 4283 You Are the One(动态规划)
文章目录题目AC代码题目本题链接:You Are the One本博客给出本题截图:AC代码#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>using namespace std;const int N = 110;int f[N][N];int d[N];int s[N];int main(){ int T;.原创 2021-11-29 13:13:12 · 626 阅读 · 0 评论 -
P4170 [CQOI2007]涂色
文章目录P4170 [CQOI2007]涂色AC代码P4170 [CQOI2007]涂色本题链接:P4170 [CQOI2007]涂色本博客给出本题截图:AC代码代码解释:代码:#include <iostream>#include <algorithm>#include <cstring>#include <string>using namespace std;const int N = 55;int f[N][N];.原创 2021-10-24 21:13:16 · 622 阅读 · 0 评论 -
P3146 [USACO16OPEN]248 G
文章目录P3146 [USACO16OPEN]248 GAC代码P3146 [USACO16OPEN]248 G本题链接:P3146 [USACO16OPEN]248 G本博客给出本题截图:AC代码代码解释:这里的状态转移方程定义有一些特别,我们定义f[i][j]表示将[i, j]范围内完全合并后的分数最大值所以我们带入到区间dp后的思路为,只有当我们的f[i][k] == f[k + 1][j]的时候,才可以进行状态转移,我们用res表示我们的最终答案,为什么最终答案不是f[1][n].原创 2021-10-24 14:15:36 · 2288 阅读 · 0 评论 -
P1063 [NOIP2006 提高组] 能量项链
文章目录P1063 [NOIP2006 提高组] 能量项链AC代码P1063 [NOIP2006 提高组] 能量项链本题链接:P1063 [NOIP2006 提高组] 能量项链本博客给出本题截图:AC代码代码解释:和题目 P1880 [NOI1995] 石子合并 大意一致,相同的东西不再进行赘述,这里说一下细节上的区别,首先就是我们的len更新为最少长度为3,上一题中为1(当然可以是2),这里的原因是和输入有关系,因为三组数据其实代表的是两个不同的石头,然后len的最大值为n + 1,这里的.原创 2021-10-18 18:48:38 · 695 阅读 · 0 评论 -
P1880 [NOI1995] 石子合并
文章目录P1880 [NOI1995] 石子合并AC代码P1880 [NOI1995] 石子合并本题链接:P1880 [NOI1995] 石子合并本博客给出本题截图:AC代码代码解释:区间dp的板子题,对于一个环形的区间思考起来显然是没有一个线性的区间好去思考问题的,这里我们有一种十分常见方便的操作方法,那就是区间开成题目中规定的两倍,然后整体复制,即如下操作:for (int i = 1; i <= 2 * n; i ++ ){ cin >> a[i]; a[i].原创 2021-10-18 18:05:28 · 765 阅读 · 0 评论 -
P3205 [HNOI2010]合唱队
文章目录P3205 [HNOI2010]合唱队AC代码P3205 [HNOI2010]合唱队本题链接:P3205 [HNOI2010]合唱队本博客给出本题截图:AC代码代码解释:和 P1220 关路灯 同一类型的题目,问题的关键还是状态转移方程的思路,我们会发现,对于我们的理想队形,我们每次往理想队形中插入一个人的时候,只有可能往最左边或者最右边去插入,这就意味着,我们插入的人肯定是队伍的最两边的,我们都知道,往队伍的左右插入是由 上一个插入的人的身高作比较 得到的结果,又由于每次的插入都是.原创 2021-10-18 12:34:01 · 504 阅读 · 0 评论 -
P1220 关路灯
文章目录P1220 关路灯AC代码P1220 关路灯本题链接:P1220 关路灯本博客给出本题截图:AC代码代码解释:代码:#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int N = 55;int n, c;int f[N][N][2];int p[N], d[N];int main(){ int n, .原创 2021-10-17 21:59:53 · 539 阅读 · 0 评论 -
AcWing 272. 最长公共上升子序列
AcWing 272. 最长公共上升子序列AcWing 272. 最长公共上升子序列AC代码AcWing 272. 最长公共上升子序列本题链接:AcWing 272. 最长公共上升子序列本博客给出本题截图:AC代码代码解释:f[i][j]代表所有在a[1 ~n]和b[1 ~ n]中都出现过,并且以b[j]结尾的公共上升子序列的最大值的集合如果不包含a[i]的话那么f[i][j] = f[i - 1][j];如果包含a[i]的话,那么我们现在的公共上升子序列必然最后一位是a[i] (b.原创 2021-08-24 17:29:18 · 545 阅读 · 0 评论 -
AcWing 271. 杨老师的照相排列
AcWing 271. 杨老师的照相排列AcWing 271. 杨老师的照相排列AC代码AcWing 271. 杨老师的照相排列本题链接:AcWing 271. 杨老师的照相排列本博客给出本题截图:AC代码代码解释:仔细分析题意后本题有两个性质:性质1:在每一排中,当前排好位置的人一直在最左边连续的一段性质2:从上到下每排人数单调递减f[a][b][c][d][e]代表的是第一排有 a 人,第二排有 b 人,第三排有 c 人,第四排有 d 人,第五排有 e 人的方案数,本题较为简单,.原创 2021-08-24 16:42:06 · 510 阅读 · 0 评论 -
P1091 [NOIP2004 提高组] 合唱队形
P1091 [NOIP2004 提高组] 合唱队形P1091 [NOIP2004 提高组] 合唱队形AC代码P1091 [NOIP2004 提高组] 合唱队形本题链接:P1091 [NOIP2004 提高组] 合唱队形本博客给出本题截图:AC代码代码解释:看成一个上升子序列 + 一个下降子序列,f[i]表示以i为结尾的最长上升子序列,g[i]表示以i为开头的最长下降自序列,本题问最少需要几名同学出列,其实就是问出列后队伍最长是多长,即我们需要求一个上升子序列和一个下降子序列,使得这两个子序列.原创 2021-08-23 18:29:08 · 596 阅读 · 0 评论 -
P1233 木棍加工
P1233 木棍加工P1233 木棍加工AC代码总结P1233 木棍加工本题链接:P1233 木棍加工本博客给出本题截图:AC代码代码解释:按照长度从大到小排列,如果长度相同,则按照宽度从大到小进行排列,如此操作后,这个问题就变成了在n个数中,求不下降子序列最少个数,根据 dilworth定理:不下降子序列最小个数等于最大上升子序列的长度,故这个题就转换成了求n个数的最大上升子序列,f[i] 表示长度为 i 的(木棒宽度的)上升子序列结尾最小是多少,显然f是单调上升的,如果f数组的结尾元素小.原创 2021-08-23 18:17:13 · 529 阅读 · 0 评论 -
P1077 [NOIP2012 普及组] 摆花
P1077 [NOIP2012 普及组] 摆花P1077 [NOIP2012 普及组] 摆花AC代码P1077 [NOIP2012 普及组] 摆花本题链接:P1077 [NOIP2012 普及组] 摆花本博客给出本题截图:AC代码代码解释:f[i][j]代表摆了第i种花后,已经摆了j盆的最优解,本题注意初始化f数组,摆了i种花,已经摆了0盆的方案数显然是1代码*:#include <iostream>using namespace std;const int N = .原创 2021-08-23 14:54:59 · 708 阅读 · 0 评论 -
P4933 大师
P4933 大师P4933 大师AC代码P4933 大师本题链接:P4933 大师本博客给出本题截图:AC代码代码解释:代码*:原创 2021-08-21 17:59:54 · 602 阅读 · 0 评论 -
P2758 编辑距离
P2758 编辑距离P2758 编辑距离AC代码P2758 编辑距离本题链接:P2758 编辑距离本博客给出本题截图:AC代码代码解释:f[i][j]:把a数组的前i项变成b数组的前j项所需要的最少操作状态转移方程推导:分为三个操作:增:因为要在i的后面增加一个字符才可以和b匹配,故为:f[i][j - 1] + 1;减:证明a数组的前 i - 1 项是和b数组匹配的,故为:f[i - 1][j] + 1;更改:更改分两种情况,即如果不需要更改的话为:f[i - 1][j - 1],如果.原创 2021-08-21 01:58:54 · 476 阅读 · 0 评论 -
P1280 尼克的任务
P1280 尼克的任务P1280 尼克的任务AC代码P1280 尼克的任务本题链接:P1280 尼克的任务本博客给出本题截图:AC代码代码解析:f[i]代表的是从i ~ n中最长可以休息的时间,对于一个节点i而言,如果i这个时刻没有工作,那么有:f[i] = f[i + 1] + 1,如果有工作的话,那么有:f[i] = max(f[i], f[i + v[i][j]])代码:#include <iostream>#include <algorithm>#i.原创 2021-08-21 01:20:21 · 482 阅读 · 0 评论 -
P1439 【模板】最长公共子序列
P1439 【模板】最长公共子序列P1439 【模板】最长公共子序列AC代码P1439 【模板】最长公共子序列本题链接:P1439 【模板】最长公共子序列本博客给出本题截图:AC代码代码解释:本题其实是一个 LIS 问题二维状态量的话显然会TLE,这个题和其他的最长公共子序列不同的一点就是它只会包涵并且肯定包涵1 ~ n这些数,相当于P1数组和P2数组中的元素都是唯一对应,这里我们这样去处理:我们把数组P1中的元素看成是一种顺序,那么本题要求的其实就变成了数组P2在数组P1的这种顺序下.原创 2021-08-20 18:51:21 · 490 阅读 · 0 评论 -
P1020 [NOIP1999 普及组] 导弹拦截
P1020 [NOIP1999 普及组] 导弹拦截题目AC代码1upper_bound 和 lower_boundAC代码2总结题目本博客给出本题截图:首先需要 说明 ,这个题目在 AcWing 中也有一模一样的题目,但是两个题目的数据范围不同:AcWing:AcWing 1010. 拦截导弹 洛谷:P1020 [NOIP1999 普及组] 导弹拦截洛谷 中的数据范围更大,本题提供两个代码,第一个代码在 AcWing 中可以 AC,但是在洛谷中有一半的数据会 TLE,第二个代码则在洛谷中也.原创 2021-08-20 16:08:54 · 5475 阅读 · 2 评论 -
P1359 租用游艇
题目题目描述长江游艇俱乐部在长江上设置了 n 个游艇出租站 1,2,⋯,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站 ii 到游艇出租站 jj 之间的租金为 r(i,j)(1≤i<j≤n)。试设计一个算法,计算出从游艇出租站 1 到游艇出租站 n 所需的最少租金。输入格式第一行中有一个正整数 n,表示有 n 个游艇出租站。接下来的 n−1 行是一个半矩阵 r(i,j)r(i,j)(1≤i<j≤n)。输出格式输出计算出的从游艇出租站 1 到游艇出原创 2021-08-17 18:24:52 · 438 阅读 · 2 评论