动态规划
文章平均质量分 50
胃口很大的一条小蛇仔
你跑的快,耳边听到的全是风声;你跑的慢,自然会听到闲言碎语
展开
-
蓝桥杯专题之动态规划
题目列表:2015年:生命之树2017年:最长公共子序列2018年:测试次数2019年:数列求值2020年:矩阵2021年:砝码称重原创 2022-04-07 15:37:07 · 1351 阅读 · 0 评论 -
蓝桥杯2021届C++B组省赛真题 砝码称重
分析:你对每个砝码都有3种选择,一种是不选,一种是放左边,取‘+’号,一种是放右边,取‘-’号i 的范围是[1,N], j 的范围是[-V,+V] (V是所有砝码的总重量)因为下标不能是负数,所以我们要给 j 加个偏移量V,这样 j 的范围就变成了[0,2V]代码:#include<iostream>using namespace std;const int MAX_N = 110;const int MAX_V = 1e5+10; ...原创 2022-03-25 15:40:53 · 782 阅读 · 0 评论 -
线性dp-----最长公共上升子序列
首先介绍一下什么是最长公共上升子序列?对于两个数列A,B,如果他们都包含一段位置不一定连续的且数值是严格递增的,那么称这一段数就是两个数列的公共上升子序列,所有公共子序列中最长的就是最长公共子序列分析:所有在A[1……i中]和B[1……j]中都出现过,且以B[j]为结尾的公共上升子序列的集合将集合分为两类 :不包含A[i]的公共子序列 和 包含A[i]的公共子序列求:dp[i][j] : Max(第一类,第二类)所有在A[1……i]和B[1……j]中都出现 且 不包含A[i.原创 2022-03-18 16:41:54 · 339 阅读 · 0 评论 -
线性dp-------最长上升子序列
例:1 5 2 3 11 7 8最长上升子序列:1 2 3 7 8,长度为5分析:代码:#include<iostream>using namespace std;const int N = 1010;int n;int a[N];int dp[N];int main(){ cin >> n; for(int i = 1;i <= n;i++){ cin >> a[i]; }...原创 2022-03-17 21:44:35 · 207 阅读 · 0 评论 -
区间dp------石子合并
题目:有一堆石子,编号为1,2,3……N每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和找到一种方案使总代价最小举个例子:1 3 5 2第一种方案:先合并第1,2堆====>4 4 5 2再合并第1,2堆====>9 9 2再合并第1,2堆====>11 11这一种方案的总代价 : 4+9+11 = 24第二种方案:先合并第1,2堆====>4 4 ...原创 2022-03-17 17:25:40 · 261 阅读 · 0 评论 -
线性dp------0-1背包问题+完全背包问题
题目:N件物品和一个容量为V的背包,每件物品只能使用一次第i件物品的体积是V[i],价值是w[i]分析:代码:#include<iostream>using namespace std;const int N = 1010;int N,V;int v[N],w[N];int dp[N][N];int main(){ cin >> N >> V; for(int i = 1;i <= N;i++){ cin &g.原创 2022-03-17 16:20:29 · 374 阅读 · 0 评论 -
线性dp--------最长公共子序列
例:A = abcdefg B = eebegA,B的最长公共子序列就是:beg;长度为3分析:代码:#include<iostream>#include<cstring>using namespace std;const int N = 1010;int n,m;char a[N],b[N];int dp[N][N];int main(){ cin >> n >> m >> a+...原创 2022-03-17 15:40:53 · 227 阅读 · 0 评论 -
线性dp------杨老师的照相排列
题目大意:将从1~N的N个数放在k排中,每一排从左到右依次递增,每一列从前到后依次递增分析:如果每一排从左到右依次递增,每一列从前到后依次递增,则必须满足:性质1: 在每一排中,当前排好位置的人一定是最左边连续的一段性质2:前一排的人数一定大于后一排的人数设 a,b,c,d,e分别表示第一排,第二排,第三排,第四排,第五排的人数f{a,b,c,d,e}表示第一排a人,第二排b人……的方案数以最矮的那个人安排在哪一排作为划分依据:核心...原创 2022-03-15 21:22:26 · 428 阅读 · 0 评论 -
2018届C++B组省赛真题 测试次数
题目:x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。如果手机从第7层扔下去没摔坏,但第8层摔坏了,则手机耐摔指数=7。特别地,如果手机从第1层扔下去就坏了,则耐摔指数=0。如果到了塔的最高层第n层扔没摔原创 2022-03-01 19:20:03 · 88 阅读 · 0 评论