当前位置: 首页 > news >正文

2021牛客OI赛前集训营-提高组(第三场) T1变幻

2021牛客OI赛前集训营-提高组(第三场)

题目大意

对于一个大小为nnn的数组aaa的任意一点iii,若满足ai−1>aia_{i-1}>a_iai1>aiai<ai+1a_i<a_{i+1}ai<ai+1,则称iii为山谷点。111nnn不可能为山谷点。

你最多可以修改最多kkk次数组,每次可以将一个aia_iai的值变小。

求所有山谷点的aaa值之和的最大值。


题解

fi,jf_{i,j}fi,j表示最后一次修改在点iii或点iii之前,已经修改了jjj次的前iii个数的最大的山谷点的和,那么

  • fi,j=fi−1,jf_{i,j}=f_{i-1,j}fi,j=fi1,j
  • 如果aia_iai本来就是山谷点,则fi,j=max⁡(fi,j,fi−2,j+ai)f_{i,j}=\max(f_{i,j},f_{i-2,j}+a_i)fi,j=max(fi,j,fi2,j+ai)
  • 如果j≥1j\geq 1j1,则fi,j=max⁡(fi,j,fi−2,j−1+min⁡(ai−1,ai+1)−1)f_{i,j}=\max(f_{i,j},f_{i-2,j-1}+\min(a_{i-1},a_{i+1})-1)fi,j=max(fi,j,fi2,j1+min(ai1,ai+1)1)

答案为max⁡i=0kfn−1,i\max\limits_{i=0}^kf_{n-1,i}i=0maxkfn1,i

时间复杂度为O(nk)O(nk)O(nk)

code

#include<bits/stdc++.h>
using namespace std;
int n,k;
long long ans=0,a[2005],f[2005][2005];
int main()
{scanf("%d%d",&n,&k);for(int i=1;i<=n;i++){scanf("%lld",&a[i]);}for(int i=1;i<=n;i++){for(int j=0;j<=n;j++) f[i][j]=-1e18;}f[1][0]=0;for(int i=2;i<n;i++){for(int j=0;j<=k;j++){f[i][j]=f[i-1][j];if(a[i]<a[i-1]&&a[i]<a[i+1]) f[i][j]=max(f[i][j],f[i-2][j]+a[i]);else if(j>=1) f[i][j]=max(f[i][j],f[i-2][j-1]+min(a[i-1],a[i+1])-1);}}for(int i=0;i<=k;i++) ans=max(ans,f[n-1][i]);printf("%lld",ans);return 0;
}
http://www.lryc.cn/news/34594.html

相关文章:

  • 你还在使用if-else写代码吗,今天带你领略下策略模式的魅力!
  • Leetcode. 21 合并两个有序列表
  • 使用 Wall 教你搭建 照片墙 和 视频墙
  • 0103 MySQL06
  • 【UE4 RTS游戏】04-摄像机运动_鼠标移动到视口边缘时移动Pawn
  • 147597-66-8,p-SCN-Bn-NOTA,NOTA-P-苯-NCS新型双功能螯合剂
  • JDK解压安装及idea开发工具配置
  • 使用Ubuntu中的Docker部署Remix
  • 【MySQL】P9 多表查询(3) - 子查询
  • SpringMVC中的拦截器不生效的问题解决以及衍生出的WebMvcConfigurationSupport继承问题思考
  • 【量化交易笔记】3.实现数据库保存数据
  • [数据结构]:15-堆排序(顺序表指针实现形式)(C语言实现)
  • 蓝桥 卷“兔”来袭编程竞赛专场-02破解曾公亮密码 题解
  • CSS定位
  • python sympy库
  • 达梦数据库统计信息的导出导入
  • 信息系统基本知识(六)
  • <C++>智能指针
  • 1.分析vmlinux可执行文件是如何生成的? 2.整理内核编译流程:uImage/zImage/Image/vmlinx之间关系
  • 数据结构4——线性表3:线性表的链式结构
  • weblogic 忘记密码重置密码
  • 安卓开发之动态设置网络访问地址
  • 深度学习模型训练工作汇报(3.8)
  • 【ns-3】添加nr(5G-LENA)模块
  • (枚举)(模拟)(前缀和)(数组模拟哈希)(可二分)1236. 递增三元组
  • mysql五种索引类型(实操版本)
  • 微服务进阶之 SpringCloud Alibaba
  • 前端性能优化笔记2 第二章 度量
  • 关于new和delete的一些思考,为什么不能在析构函数中调用delete释放对象的内存空间,new和delete的原理
  • 一场以数字技术深度影响和改造传统实业的新风口,正在开启