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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/407317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谁优谁劣?——AMD与Intel产品对比分析

谁优谁劣&#xff1f;——AMD与Intel产品对比分析1. AMD与Intel的产品线概述AMD目前的主流产品线按接口类型可以分成两类&#xff0c;分别是基于Socket 754接口的中低端产品线和基于Socket 939接口的中高端产品线&#xff1b;而按处理器的品牌又分为Sempron、Athlon 64、Optero…

IDEA控制台乱码

报错情况&#xff1a; 报错原因&#xff1a;Idea的vm用的编码格式不一致&#xff1a;需要修改为UTF-8 你看Tomcat我之前下在后修改果&#xff0c;就没有报错&#xff0c;新人刚下载也有乱码问题 问题解决&#xff1a; 按我步骤来一定对 下面这俩文件打开输入&#xff1a; -D…

在Hibernate的session中同时有两个相同id的同类型对象,修改失败

若在Hibernate的session中同时有两个相同id的同类型对象&#xff0c;修改会失败&#xff0c;报错&#xff1a;a different object with the same identifier value was already 解决方案&#xff1a; 使用merge() 如下情景&#xff1a; User u dao.getUser(...) ; User u2 ..…

[Linux] undefined reference to `itoa'

在linux写了个简单的C程序&#xff0c;里面用到了itoa&#xff0c;但是编译时提示“undefined reference to itoa”&#xff0c;本以为加上-lc就行了&#xff0c;可结果还是一样。上网发现&#xff0c;有人说这个函数在linux中是不存在的&#xff0c;一般用sprintf来代替。看下…

React开发(119):代码原因

<Form.Item label"协议" name"模板文件" required>{getFieldDecorator(agreementFilePath[${k}], {})(<Uploadmultiple{false}onChange{this.handleFileChange}beforeUpload{this.beforeUpload}customRequest{(data) > this.onUpload(data, k)…

Git之创建版本库

什么是版本库呢&#xff1f;版本库又名仓库&#xff0c;英文名repository&#xff0c;你可以简单理解成一个目录&#xff0c;这个目录里面的所有文件都可以被Git管理起来&#xff0c;每个文件的修改、删除&#xff0c;Git都能跟踪&#xff0c;以便任何时刻都可以追踪历史&#…

显示环境变量的值

/*功能&#xff1a;显示环境变量的值*/#include <stdio.h>extern char **environ;// 查找环境变量的值&#xff0c;与系统调用getenv()功能相同char* findenv(char *name) // 在环境变量中查找指定的变量名&#xff0c;如找到&#xff0c;则返回其值(后的字符串){int l…

reading notes -- Amazon.com Recommendations: Item-to-Item Collaborative Filtering

中英译本及下载&#xff1a;http://blog.sina.com.cn/s/blog_586631940100pduh.html 以下是摘要笔记&#xff1a; 算法应当结合用户的习惯&#xff0c;用户特点的分类 观影习惯是比较单一 还是比较分散 这是不同的 一、推荐的宗旨&#xff1a;推荐应该要帮助顾客找到和发现新的…

Leetcode刷题(3)整数反转

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1题目 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反…

Git之diff和status

我们已经成功地添加并提交了一个readme.txt文件&#xff0c;现在&#xff0c;是时候继续工作了&#xff0c;于是&#xff0c;我们继续修改readme.txt文件&#xff0c;改成如下内容&#xff1a; 现在&#xff0c;运行git status命令看看结果 git status命令可以让我们时刻查看工…

移动端H5终端适配方案

1.JS的根据不同屏幕宽度动态设置html的font-size&#xff0c;使用rem布局。 a.手淘方案 flexiblerem&#xff08;参考https://github.com/amfe/article/issues/17&#xff09; 引入flexible.js&#xff0c;不需要在html结构中加入viewport标签。 flexible.js会在元素上增加一…

WWW超文本源码浏览器

Linux下的C程序&#xff1a;读取远程服务器上的网页源码。 /*功能&#xff1a;WWW超文本源码浏览器 */#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdarg.h> #include <sys/socket.h> #include <netinet/in.h&g…

TCP为何采用三次握手来建立连接,若采用二次握手可以吗

1. TCP简介 TCP&#xff08;Transmission Control Protocol 传输控制协议&#xff09;是一种面向连接&#xff08;连接导向&#xff09;的、可靠的、基于IP的传输层协议&#xff0c;采用三次握手确认建立一个连接。 TCP为了保证报文传输的可靠[1]&#xff0c;就给每个包一个序号…

在asp.net中备份还原SQL Server数据库

在web中&#xff0c;安全性主要体现在两个方面&#xff1a;一个是程序安全性&#xff0c;即防止网页在插入恶意代码&#xff1b;另一个是数据库安全性&#xff0c;这个我们可以经常备份数据库来实现。在文中&#xff0c;我将演示如果在网页中备份和恢复数据库。其实备份和恢复数…

Leetcode刷题(4)罗马数字转整数

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&a…

深入理解移动前端开发之viewport

在移动设备上进行网页的重构或开发&#xff0c;首先得搞明白的就是移动设备上的viewport了&#xff0c;只有明白了viewport的概念以及弄清楚了跟viewport有关的meta标签的使用&#xff0c;才能更好地让我们的网页适配或响应各种不同分辨率的移动设备。 一、viewport的概念 通…

Git之版本回退

像这样&#xff0c;你不断对文件进行修改&#xff0c;然后不断提交修改到版本库里&#xff0c;就好比玩RPG游戏时&#xff0c;每通过一关就会自动把游戏状态存盘&#xff0c;如果某一关没过去&#xff0c;你还可以选择读取前一关的状态。有些时候&#xff0c;在打Boss之前&…

整型数组的循环右移

/*实现整型数组的循环右移cycleMoveR1&#xff1a;临时空间比较大&#xff0c;但是时间复杂度为O(1)cycleMoveR2&#xff1a;临时空间比较小&#xff0c;时间复杂度为O(n)*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h&…

Leetcode刷题(5)最长公共前缀

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&…