![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
suhxbn
这个作者很懒,什么都没留下…
展开
-
长度为 k 的上升子序列的个数(dp)
蓝桥杯模拟赛遇到的一个问题,和以前做的最长上升子序列有点像,代码也不知道对了没。希望300块不要白给==问题描述给定一个序列 (a1, a2, …, an), 它的一个上升子序列是指从序列中取出一些元素,按照原来的顺序排列后,是单调递增的序列。 例如,对于序列 (3, 2, 7, 6, 7),取出下标为 2, 4, 5 的元素 a2, a4, a5,即 2, 6, 7,是一个上升子序列。 在这个序列中,有 7 个长度为 2 的上升子序列,例如1.下标 1, 3 对应的 3, 7; 2. 下标原创 2021-03-20 22:22:05 · 2565 阅读 · 6 评论 -
线性dp.
矩阵问题描述把 1 ∼ 2020 放在 2 × 1010 的矩阵里。要求同一行中右边的比左边大,同一列中下边的比上边的大。一共有多少种方案?答案很大,你只需要给出方案数除以 2020 的余数即可。答案提交这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。题解:dp[i][j]表示将i+j放好之后,第一行放到了第i个位置,第二行放到了第j个位置。状态转移方程:dp[i][j]=dp[i-1][j]+dp[i][j-1原创 2021-04-17 00:12:35 · 136 阅读 · 0 评论 -
最大区间dp
给出n个数,求选取其中连续的数字相加,最大值为最大区间(区间长度可为0)输入102 -3 4 -1 -2 1 5 -3 1 1输出7状态转移方程dp[1]=max(a[i]+dp[i-1],a[i])代码#include<bits/stdc++.h>using namespace std;int a,dp,ans=0;int main(){int...原创 2020-03-15 21:31:21 · 286 阅读 · 0 评论 -
区间dp
题目在最后#include<bits/stdc++.h> using namespace std; const int maxn=105; int a[maxn]; int dp[maxn][maxn]; int main(){ int t,n,j=1; cin>>t; while(t--){ cin>>n; memset(a,0,sizeof(a)); me...原创 2020-03-14 20:41:37 · 109 阅读 · 0 评论 -
动态规划01
求一定区间(时间)内可获得的最大利益#include<iostream>##include<iostream>#include<algorithm>using namespace std;const int maxn=105;int opt[maxn];struct nobe{int sta,end,v,pre;}a[maxn];cmp(...原创 2020-03-13 17:09:36 · 128 阅读 · 0 评论