HDU 1244 Max Sum Plus Plus Plus
虽然这道题看起来和 HDU 1024 Max Sum Plus Plus 看起来很像,可是感觉这道题比1024要简单一些
前面WA了几次,因为我开始把dp[22][maxn]写成dp[maxn][22]了,Orz
看来数组越界不一定会导致程序崩溃,也有可能返回一个错误的结果
dp[i][j]表示前j个数构成前i段所得到的最大值
状态转移方程:
dp[i][j] = max{dp[i][j-1], dp[i-1][j-len[i]] + sum[j] - sum[j-len[i]]}
分别对应着不取第i个数和取第j个数及其之前相邻的共len[i]个数作为第i段加上之前的数构成i-1段构成的最大值
1 //#define LOCAL 2 #include <algorithm> 3 #include <cstdio> 4 #include <cstring> 5 using namespace std; 6 7 const int maxn = 1000 + 10; 8 int a[maxn], sum[maxn], len[22], dp[22][maxn]; 9 10 int main(void) 11 { 12 #ifdef LOCAL 13 freopen("1244in.txt", "r", stdin); 14 #endif 15 16 int n, m; 17 while(scanf("%d", &n) == 1 && n) 18 { 19 scanf("%d", &m); 20 for(int i = 1; i <= m; ++i) 21 scanf("%d", &len[i]); 22 for(int i = 1; i <= n; ++i) 23 scanf("%d", &a[i]); 24 sum[0] = 0; 25 for(int i = 1; i <= n; ++i) 26 sum[i] = sum[i - 1] + a[i]; 27 memset(dp, 0, sizeof(dp)); 28 for(int i = 1; i <= m; ++i) 29 { 30 for(int j = 1; j < len[i]; ++j) 31 dp[i][j] = dp[i][j-1]; 32 for(int j = len[i]; j <= n; ++j) 33 dp[i][j] = max(dp[i][j-1], dp[i-1][j-len[i]] + sum[j] - sum[j-len[i]]); 34 } 35 printf("%d\n", dp[m][n]); 36 } 37 return 0; 38 }
代码君
转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/3931550.html
HDU 1244 Max Sum Plus Plus Plus相关推荐
- 整数行hdu 1244 Max Sum Plus Plus Plus(dp)
废话就不多说了,开始... Max Sum Plus Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
- HDU.1003 Max Sum
原题 HDU.1003 Max Sum 分类 动态规划 题意 计算从一个序列中最大连续子序列和.对应的起始元素和终止元素的位置. 输入/输出 要求与格式 样例数的确定 最开始一行开始输入样例数 每个样 ...
- hdu 1003 Max Sum 解题报告
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Problem Description Given a sequence a[1],a[2],a[3 ...
- hdu 1003 Max Sum (DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others) ...
- [hdu 1003] Max Sum
跟<算法导论(第三版)>上的一样,抄下来的 30 - 60 ms 标准的分治策略 1 #include <stdio.h> 2 3 int A[100000], Lenght; ...
- HDU 1024 Max Sum Plus Plus 动态规划
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024 题目大意:n个数分成两两不相交的m段,求使这m段和的最大值. 解题思路:比较坑的点:n2 能过: ...
- HDU 1024 Max Sum Plus Plus
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024 Max Sum Plus Plus Time Limit: 2000/1000 MS (Java ...
- hdu 1003 Max Sum
DP可以这里给出非DP程序 题目传送门 1 #include<stdio.h> 2 int main() 3 { 4 int t,n,i,max,m,sum,ki,kj,k,a,b; 5 ...
- hdu - 3415 Max Sum of Max-K-sub-sequence
题意:求一个环中最大区间和,区间长度 <= n. 用单调队列优化Dp,核心内容是dp[i] = max(sum[j]) - sum[i-1]. 这题最后的输出有很多要求,如果有多个解,输出起始位 ...
最新文章
- 中科院院士指出“万物互联”只是开始,“万物控制”是物联网下一个挑战
- 【Python-ML】神经网络激励函数-双曲正切(hyperbolic tangent,tanh)函数
- golang中的go mod开发
- 绕过html标签,巧妙绕过WAF的XSS技巧
- 在项目中缓存是如何使用的?
- 计算机加入域 不能访问网络位置 解决办法
- php html邮件,php发送HTML邮件
- EFCore-一对一配置外键小记
- 如何在Mac的内置词典中添加和删除单词
- namenode节点无法启动解决方法
- WWDC20中iOS的改变
- javaweb小说阅读网站源码
- 关于电的计算机公式,电气设计相关计算公式大全
- Navicat数据库查询时字体
- Markdown箭头总汇
- 初识Python自动化运维(一)
- 彩信发送失败原因是什么?如何解决?
- CSS代码缩写,占用更少的带宽/字体缩写/盒模型代码简写/颜色值缩写
- 使用虚拟信用卡在Poshmark下单教程和注意事项
- Google网站提交指南