线性dp——1197D
2024-09-06 05:12:08
一开始没有什么头绪,后来注意到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;
}
最新文章
- Win10 连接L2TP VPN 失败解决方法
- HTML5 UI框架Kendo UI Web中如何实现Grid网格控件本地化
- WEB安全--CSRF防御
- Bootstrap 内核引用(一)
- 【Python】Markov text generator马尔科夫文字生成器
- Python之系统交互(subprocess)
- (luogu P1383)高级打字机
- [Swift]LeetCode328. 奇偶链表 | Odd Even Linked List
- SpringBoot前后端分离Instant时间戳自定义解析
- HDU 6432(不连续环排列 ~)
- java笔记 -- java简单结构代码解析及注释
- 洛谷 P1571 眼红的Medusa【二分查找】 || 【map】
- DataSet &; DataTable &;DataRow 深入浅出
- Java基础-SSM之Spring和Mybatis整合案例
- flashsim配置2015最新版本
- SNMP学习笔记之SNMP TRAP简介、流程以及使用Python实现接受Trap信息
- GBDT 简述
- 从 php 源码看 php 中的对象
- python学习笔记(22)--漫画生成html最终版
- 解决maven install报错信息(Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile )