E - Max Sum Plus Plus Plus HDU - 1244 (线性区间DP)
题目大意: 值得注意的一点是题目要求的是这些子段之间的最大整数和。注意和Max Sum Plus Plus这个题目的区别。
题解:
线性区间DP,对每一段考虑取或者不取。定义状态dp[i][j]指的是前i个数分为j段。
如果第j段不选的话dp[i][j]=dp[i-1][j],直接就是上一个状态的值。
如果选得话,dp[i][j]=dp[i-part[j]][j-1]+sum[i]-sum[i-part[j]]。前一共有i个数,第j段要占用i-part[j]个数,所以前j-1段要占用
i-part[j]个数。然后取最好的状态就行了。复杂度O(n*m)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=+;
ll dp[N][N];
ll arr[N];
ll part[N];
ll sum[N];
int main(){
ll n;
while(cin>>n,n){
ll m;
cin>>m;
memset(dp,,sizeof dp);
memset(sum,,sizeof sum);
for(ll i=;i<=m;i++) cin>>part[i];
for(ll i=;i<=n;i++) cin>>arr[i];
for(ll i=;i<=n;i++) sum[i]=sum[i-]+arr[i];
for(ll i=;i<=n;i++)
for(ll j=;j<=m;j++){
if(part[j]>i) dp[i][j]=dp[i-][j];
else dp[i][j]=max(dp[i-][j],
dp[i-part[j]][j-]+sum[i]-sum[i-part[j]]);
}
cout<<dp[n][m]<<endl;
}
return ;
}
E - Max Sum Plus Plus Plus HDU - 1244 (线性区间DP)的更多相关文章
- (最大m子段和) Max Sum Plus Plus (Hdu 1024)
http://acm.hdu.edu.cn/showproblem.php?pid=1024 Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/ ...
- hdu 4579 博弈+区间dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4597 #include <cstdio> #include <cstring> ...
- hdu 5396 Expression(区间dp)
Problem Description Teacher Mai has n numbers a1,a2,⋯,anand n−1 operators("+", "-&quo ...
- You Are the One HDU - 4283 (区间DP)
Problem Description The TV shows such as You Are the One has been very popular. In order to meet the ...
- Dire Wolf HDU - 5115(区间dp)
Dire Wolf Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others)Total ...
- HDU 5568 sequence2 区间dp+大数
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5568 题意: 求所有长度为k的严格升序子序列的个数. 题解: 令dp[i][k]表示以i结尾的长度为 ...
- Hdu 2513 区间DP
Cake slicing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- HDU 1244 Max Sum Plus Plus Plus
虽然这道题看起来和 HDU 1024 Max Sum Plus Plus 看起来很像,可是感觉这道题比1024要简单一些 前面WA了几次,因为我开始把dp[22][maxn]写成dp[maxn][2 ...
- HDU 1024 max sum plus
A - Max Sum Plus Plus Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I6 ...
随机推荐
- 【2019多校第一场补题 / HDU6582】2019多校第一场E题1005Path——最短路径+网络流
HDU6582链接 题意 在一张有向图中,有一个起点和一个终点,你需要删去部分路径,使得起点到终点的最短距离增加(并不要求需要使得距离变成最大值),且删除的路径长度最短.求删去的路径总长为多少 分析 ...
- Bootstrap 基本配置与应用
配置使用 下载文件引用 下载方式:Bootstrap官网 https://www.bootcss.com/ 引用 例: <head> <meta charset="utf- ...
- 刷oj之类的题时java Scanner读取太慢解决之道
1.转载自一个 https://www.cpe.ku.ac.th/~jim/java-io.html 2.工具代码 class Reader { static BufferedReader reade ...
- JSON字符串带BOM头"ufeff"
调用三方接口返回值JSON字符串带BOM头"\ufeff",JSON解析死活报错. 我是用SpringBoot的RestTemplate调用三方接口的,一开始返回值我是用对象接收返 ...
- Android之MVC、MVP、MVVM
本文将详细阐述以下MVC.MVP.MVVM三种理念的定义 MVC MVC全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个 基本部分:模型(Model ...
- FileReader 和Blob File文件对象(附formData初始化方法);
一.FileReader为读取文件对象 . api 地址 相关demo 现在只讨论 readAsArrayBuffer,readAsBinaryString,readAsDataURL,rea ...
- hive的基本操作与应用
通过hadoop上的hive完成WordCount 启动hadoop Hdfs上创建文件夹 创建文件夹 上传文件至hdfs 启动Hive 创建原始文档表 导入文件内容到表docs并查看 用HQL进行词 ...
- c#的全局异常捕获
以下操作在Program.cs中 1.最简单的方式try...catch.. 一般用在某一段容易出错的代码,如果用在整个软件排查,如下所示 static void Main() { try { App ...
- 线程间交换数据的Exchanger
作者:Steven1997 链接:https://www.jianshu.com/p/9b59829fb191 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处. Exc ...
- 【故障公告】部署在 k8s 上的博客后台昨天与今天在访问高峰多次出现 502
非常抱歉,从昨天上午开始,部署在 k8s 集群上的博客后台(基于 .NET Core 3.1 + Angular 8.2 实现)出现奇怪问题,一到访问高峰就多次出现 502 ,有时能自动恢复,有时需要 ...