动态规划
于楷力——一个成绩优异的男同学……
一个超帅帅哥-于楷力,最爱编C++。
展开
-
登山
【题目描述】五一到了,ACM队组织大家去登山观光,队员们发现山上一共有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?【输入】第一行:N (2 <= N <= 1000) 景点数;第二行:N个整数,每个景点的海拔。【输出】最多能浏览的景点数。【输入样例原创 2021-10-19 14:16:17 · 94 阅读 · 0 评论 -
最长下降子序列
题目描述】一个数的序列bi,当b1>b2>…>bS的时候,我们称这个序列是下降的。对于给定的一个序列(a1,a2,…,aN),我们可以得到一些下降的子序列(ai1,ai2,…,aiK),这里1>i1>i2>…>iK>N。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。这些子序列中最长的长度是4,比如子序列(1,3,5,8)。你的任务,就是对于给定的序列,求出最长下降子序列的长度。【输入】输入的第一行原创 2021-10-19 14:14:23 · 279 阅读 · 0 评论 -
最长上升子序列
【题目描述】一个数的序列bi,当b1<b2<…<bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,…,aN),我们可以得到一些上升的子序列(ai1,ai2,…,aiK),这里1≤i1<i2<…<iK≤N。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。这些子序列中最长的长度是4,比如子序列(1,3,5,8)。你的任务,就是对于给定的序列,求出最长上升子序列的长度。【输入】输入的第一行是序列的长原创 2021-10-19 14:10:58 · 102 阅读 · 0 评论 -
最大子矩阵
【题目描述】已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 × 1)子矩阵。比如,如下4 × 4的矩阵0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2的最大子矩阵是9 2-4 1-1 8这个子矩阵的大小是15。【输入】输入是一个N×N的矩阵。输入的第一行给出N(0<N≤100)。再后面的若干行中,依次(首先从左到右给出第一行的N个整数,再从左到右给出第二行的N个整数……)给出矩阵中的N2个整数原创 2021-10-18 22:04:29 · 132 阅读 · 1 评论 -
小李打怪兽
题目描述小李对故乡的思念全部化作了对雾霾天气的怨念,这引起了掌控雾霾的邪神的极大不满,邪神派去了一只小怪兽去对付小李,由于这只怪兽拥有极高的IQ,它觉得直接消灭小李太没有难度了,它决定要和小李在智力水平上一较高下。我们可否帮助小李来战胜强大的怪兽呢?问题是这样的:给定一堆正整数,要求你分成两堆,两堆数的和分别为S1和S2,谁分的方案使得S1S1-S2S2的结果小(规定S1>=S2),谁就将获得胜利。注:S2可以等于0。输入第一行n,表示共有n个数第二行共n个用空格隔开的正整数ai,表示给定转载 2021-10-04 19:14:53 · 220 阅读 · 0 评论 -
完全背包问题和优化
原版for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(j<w[i]) d[i][j]=dp[i-1][j]; else dp[i][j]=max(dp[i-1][j],dp[i][j-w[i]]+v[i]);优化for(int i=1;i<=n;i++) for(int j=w[i];j<=t;j++) dp[j]=max(dp[j],dp[j-w[i]]+v[i]);...原创 2021-10-04 11:49:24 · 54 阅读 · 0 评论 -
关于01背包和优化
原版for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(j<w[i]) d[i][j]=dp[i-1][j]; else dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);优化版for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(j<w[i]) d[i][j]=dp[i-1][j];原创 2021-10-04 11:36:36 · 49 阅读 · 0 评论