线性dp——1197D
一开始没有什么头绪,后来注意到m<=10,考虑是否可以用dp[i][j]表示第i位,前面跟了j个数的最大值
那么第i+1个数,直接和第i个数的[0,m]的m+1种状态去转移即可,如果是由0或m状态拓展出去的,那么值要-k
策略和序列最大连续子段和的贪心策略一样
#include<bits/stdc++.h>
using namespace std;
#define N 300005
#define ll long long
#define INF 0x3f3f3f3f3f3f3f3f
ll dp[N][],n,a[N],m,k; int main(){
cin>>n>>m>>k;
for(int i=;i<=n;i++)scanf("%lld",&a[i]);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
dp[i][j]=-INF; long long ans=;
dp[][]=;
for(int i=;i<n;i++){
dp[i+][]=;
for(int j=;j<=m;j++)if(dp[i][j]!=-INF){
if(j==)
dp[i+][]=max(dp[i+][],dp[i][j]+a[i+]-k);
else if(j!=m)
dp[i+][j+]=max(dp[i+][j+],dp[i][j]+a[i+]);
else dp[i+][]=max(dp[i+][],dp[i][j]+a[i+]-k);
ans=max(ans,dp[i+][j+]);
ans=max(ans,dp[i+][]);
}
}
cout<<ans<<endl;
}
线性dp——1197D的更多相关文章
- LightOJ1044 Palindrome Partitioning(区间DP+线性DP)
问题问的是最少可以把一个字符串分成几段,使每段都是回文串. 一开始想直接区间DP,dp[i][j]表示子串[i,j]的答案,不过字符串长度1000,100W个状态,一个状态从多个状态转移来的,转移的时 ...
- Codeforces 176B (线性DP+字符串)
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28214 题目大意:源串有如下变形:每次将串切为两半,位置颠倒形成 ...
- hdu1712 线性dp
//Accepted 400 KB 109 ms //dp线性 //dp[i][j]=max(dp[i-1][k]+a[i][j-k]) //在前i门课上花j天得到的最大分数,等于max(在前i-1门 ...
- 动态规划——线性dp
我们在解决一些线性区间上的最优化问题的时候,往往也能够利用到动态规划的思想,这种问题可以叫做线性dp.在这篇文章中,我们将讨论有关线性dp的一些问题. 在有关线性dp问题中,有着几个比较经典而基础的模 ...
- POJ 2479-Maximum sum(线性dp)
Maximum sum Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 33918 Accepted: 10504 Des ...
- poj 1050 To the Max(线性dp)
题目链接:http://poj.org/problem?id=1050 思路分析: 该题目为经典的最大子矩阵和问题,属于线性dp问题:最大子矩阵为最大连续子段和的推广情况,最大连续子段和为一维问题,而 ...
- nyoj44 子串和 线性DP
线性DP经典题. dp[i]表示以i为结尾最大连续和,状态转移方程dp[i] = max (a[i] , dp[i - 1] + a[i]) AC代码: #include<cstdio> ...
- 『最大M子段和 线性DP』
最大M子段和(51nod 1052) Description N个整数组成的序列a[1],a[2],a[3],-,a[n],将这N个数划分为互不相交的M个子段,并且这M个子段的和是最大的.如果M &g ...
- 『最长等差数列 线性DP』
最长等差数列(51nod 1055) Description N个不同的正整数,找出由这些数组成的最长的等差数列. 例如:1 3 5 6 8 9 10 12 13 14 等差子数列包括(仅包括两项的不 ...
随机推荐
- Temporarily disable Ceph scrubbing to resolve high IO load
https://blog.dachary.org/2014/08/02/temporarily-disable-ceph-scrubbing-to-resolve-high-io-load/ In a ...
- SCP-bzoj-1079
项目编号:bzoj-1079 项目等级:Safe 项目描述: 戳这里 特殊收容措施: DP.普通的状压状态数515,显然TLE+MLE,我们考虑把底数和幂换一换,压成155的状态数. 故状态设计为:f ...
- IDEA入门使用--二
*)IDEA安装和破解:https://www.cnblogs.com/jajian/p/7989032.html 这次我安装的是最新版2019的IDEA *)导入项目时,根据提示,一步步来.其 ...
- 正则匹配class并替换整个class为空
str.replace(/class=[\"|'](.*?)[\"|'].*?/g, '')
- java %d %n \n
Java中,%d和%f分别用来表示输出时,替换整型输出和浮点型输出的占位符. 如: int a=28; float b = 13.0f; System.out.printf("整数是:%d% ...
- 基于turtle库的七段数码管绘制
·文章结构 >样例及概览 >函数框架分析 >功能发展·样例及概览 七段数码管,是信号灯.电子表等很多设备的显示形式.而利用python的turtle库,我们也可以模拟着写出一个动态生 ...
- 【Java多线程系列八】volatile和ThreadLocal
1. volatile final class Singleton { private static Singleton instance = null; private Singleton() { ...
- yum安装apache
一.查询是否已经安装apache rpm -qa httpd 注:Apache在linux系统里的名字是httpd 如果有返回的信息,则会显示已经安装的软件.如果没有则不会显示其它的信息.如下图是 ...
- token的创建及解析
<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifac ...
- VS2008的使用
文章转载自:http://www.cnblogs.com/aduck/archive/2011/11/11/2245460.html 1.如何在vc2008中显示行号 中文版: 菜单-工具-选项 在新 ...