D. Maximum Subarray

Problem - 1796D - Codeforces

 

 思路:想了个假dp做法推了半天,果然是dp。考虑用dp[i][j]表示以i结尾的,并且选择j个+x的最长连续子序列,那么如果我不选择第i位,那么会有f[i][j]=max(w[i]-x,f[i-1][j]+w[i]-x),同时i>j也要满足,因为如果i<=j,那么所有的我必须都要选择,如果第i位我选择,那么会有

f[i][j]=max(w[i]+x,f[i-1][j-1]+w[i]+x),同时要满足j-1>=0另外我们还要保证我们总共要选择k个,在前i个中我们选择了j个,那么要满足在n-i中至少选择k-j个,即要满足n-i>=k-j,所以j>=k-n+i,所以我们只要算所有的f[i][j]同时取一个max即可,因为我们保证了我们枚举到的i,j都满足总共要选择k个的条件

// Problem: D. Maximum Subarray
// Contest: Codeforces - Educational Codeforces Round 144 (Rated for Div. 2)
// URL: https://codeforces.com/problemset/problem/1796/D
// Memory Limit: 512 MB
// Time Limit: 2000 ms#include<iostream>
#include<cstring>
#include<string>
#include<sstream>
#include<bitset>
#include<deque>
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
#include<vector> 
#include<set>
#include<cstdlib>
#define fi first
#define se second
#define i128 __int128
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> PII;
typedef pair<int,pair<int,int> > PIII;
const double eps=1e-7;
const int N=5e5+7 ,M=5e5+7, INF=0x3f3f3f3f,mod=1e9+7,mod1=998244353;
const long long int llINF=0x3f3f3f3f3f3f3f3f;
inline ll read() {ll x=0,f=1;char c=getchar();while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar();}
while(c>='0'&&c<='9') {x=(ll)x*10+c-'0';c=getchar();} return x*f;}
inline void write(ll x) {if(x < 0) {putchar('-'); x = -x;}if(x >= 10) write(x / 10);putchar(x % 10 + '0');}
inline void write(ll x,char ch) {write(x);putchar(ch);}
void stin() {freopen("in_put.txt","r",stdin);freopen("my_out_put.txt","w",stdout);}
bool cmp0(int a,int b) {return a>b;}
template<typename T> T gcd(T a,T b) {return b==0?a:gcd(b,a%b);}
template<typename T> T lcm(T a,T b) {return a*b/gcd(a,b);}
void hack() {printf("\n----------------------------------\n");}int T,hackT;
int n,m,k;
int w[N];
ll f[N][21];void solve() {n=read(),k=read();int x=read();for(int i=1;i<=n;i++) w[i]=read();for(int i=1;i<=n;i++) {for(int j=0;j<=k;j++) {f[i][j]=-llINF;}}ll res=0;for(int i=1;i<=n;i++) {for(int j=max(0,k+i-n);j<=min(i,k);j++) {if(j<i) f[i][j]=max((ll)w[i]-x,f[i-1][j]+w[i]-x);if(j>0) f[i][j]=max(f[i][j],max((ll)w[i]+x,f[i-1][j-1]+w[i]+x));f[i][j]=max(f[i][j],0ll);res=max(res,f[i][j]);}}printf("%lld\n",res);
}   int main() {// init();// stin();scanf("%d",&T);// T=1; while(T--) hackT++,solve();return 0;       
}          

参考博客:https://www.cnblogs.com/onlyblues/p/17177714.html

这个博客讲的挺详细的 

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

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

相关文章

Kubernetes 的核心概念:Pod、Service 和 Namespace 解析

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

Linux共享库库+例子

1.什么是共享库&#xff1f;有什么优点&#xff1f;和静态库有什么区别&#xff1f; Linux动态库&#xff08;Dynamic Link Library&#xff0c;缩写为DLL&#xff09;是一种在Linux系统中使用的共享库&#xff08;Shared Library&#xff09;。与静态库不同&#xff0c;动态库…

飞机乘坐流程/怎么坐飞机

飞机乘坐流程/怎么坐飞机 编写原因对象人员经历背景飞机乘坐流程流程梗概订票去往机场办理登记牌/托运行李安检登机转机 飞行中下机 后记 编写原因 从上家单位裸辞&#xff0c;大概率下次不会找频繁出差的工作了&#xff0c;而日常出行应该也不会考虑飞机这种交通工具&#xf…

结构型设计模式之外观模式【设计模式系列】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everythi…

剑指YOLOv8改进最新MPDIoU损失函数:超越现有多种G/D/C/EIoU,23年7月首发论文,高效准确的边界框回归的损失

💡本篇内容:剑指YOLOv8改进最新MPDIoU损失函数:超越现有多种G/D/C/EIoU,23年7月首发论文,高效准确的边界框回归的损失 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 💡:重点:该专栏《剑指YOLOv8原创改进》只更新改进 YOLO…

雷达信号处理自学总结(持续更新)

傅里叶变换的频率分辨率 频率分辨率 采样频率 信号长度 频率分辨率 \frac{采样频率 }{信号长度} 频率分辨率信号长度采样频率​ 可用numpy模块的fft.fftfreq函数求出傅里叶变换的频率分辨率。 https://numpy.org/doc/stable/reference/generated/numpy.fft.fftfreq.html

若依vue -【 44】

44 服务监控讲解 1 需求 显示CPU、内存、服务器信息、Java虚拟机信息、磁盘状态的信息 2 前端 RuoYi-Vue\ruoyi-ui\src\views\monitor\server\index.vue <script> import { getServer } from "/api/monitor/server";export default {name: "Server&quo…

JS(es6)同时给多个变量赋值

在ES6中&#xff0c;可以使用解构赋值语法同时给多个变量赋值。解构赋值语法可以从数组或对象中提取值&#xff0c;并将其赋给多个变量。 1. 数组解构赋值&#xff1a; const [var1, var2, var3] [1, 2, 3] console.log(var1); // 输出 1 console.log(var2); // 输出 2 cons…

前端技术搭建(动态图片)拖拽拼图!!(内含实现原理)

文章目录 前端技术搭建&#xff08;动态图片&#xff09;拖拽拼图(内含实现原理)导言功能介绍效果演示链接&#xff08;觉得不错的&#xff0c;请一键三连嘤嘤嘤&#xff09;项目目录页面搭建css样式设置工具函数游戏实现逻辑 开源地址总结 前端技术搭建&#xff08;动态图片&a…

什么是tcp rst以及什么时候产生?

rst包是仅在header control bits设置rst的空payload包&#xff0c;用于强制关闭tcp连接。常在以下场景发送 远程主机没有监听该端口 远程主机强迫关闭了一个现有连接。比如服务端进程崩溃后重启会向之前连接发送rst 相比于四次挥手的fin&#xff0c;rst是在异常情况下的无条…

SpringBoot整合JavaMail

SpringBoot整合JavaMail 简单使用-发送简单邮件 介绍协议 导入坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>添加配置 spring:mail:host: smtp.qq.co…

企业邮箱搭建费用,smtp邮件系统怎么搭建?验证码邮件群发,有哪些推荐邮件群发系统?

您是否为没法发smtp群发邮件而苦恼&#xff0c;别担心&#xff0c;这里将给大家介绍一下什么是企业邮箱&#xff0c;邮局系统怎么搭建&#xff0c;验证码邮件群发&#xff0c;有哪些推荐邮件群发系统&#xff1f; 企业邮箱搭建&#xff1a;成本和考量因素 在如今数字化的商业…

Wonderful Sql

Wonderful Sql 一. 初识数据库 练习题 1.1 编写一条 CREATE TABLE 语句&#xff0c;用来创建一个包含表 1-A 中所列各项的表 Addressbook &#xff08;地址簿&#xff09;&#xff0c;并为 regist_no &#xff08;注册编号&#xff09;列设置主键约束 表1-A 表 Addressbook…

java代码审计6之ssrf

文章目录 1、java支持的网络请求协议&#xff1a;2、Java 中能发起⽹络请求的类2.1、仅⽀持 HTTP/HTTPS 协议的类2.2、⽀持 sun.net.www.protocol 所有协议的类2.3、审计关键词 3、靶场3.1、漏洞代码13.2、ftp协议读取技巧3.3、无回显之探测内网3.4、无回显之探测文件 之前的文…

el-input 文本框 输入数字校验

目录 1. 输入整数 2. 输入整数和小数 3. 输入两位小数 1. 输入整数 <el-inputv-model"scopeRows.row.inWarehouseRow.Quantity"type"number"blur"getRowData(scopeRows.row.inWarehouseRow)"oninput"valuevalue.replace(/^0|[^0-9]/g…

【前缀和】238. 除自身以外数组的乘积

238. 除自身以外数组的乘积 解题思路 前缀与后缀的思路对于给定索引i&#xff0c;将它左边的所有数字乘积乘以右边所有数字的乘积初始化两个数组L R计算L[i] L[i - 1] * nums[i - 1] 也就是左侧所有数字的乘积计算R[i] R[i 1] * nums[i 1] 也就是右侧所有数字的成绩计算L…

Ceph概述、准备ceph部署环境、cephadm概述、安装Ceph集群、ceph块存储、存储池、rbd镜像管理、ceph客户端配置

day03 day03ceph概述部署Ceph节点准备cephadm准备基础环境安装ceph实现块存储块存储基础存储池镜像ceph客户端 ceph概述 ceph可以实现的存储方式&#xff1a; 块存储&#xff1a;提供像普通硬盘一样的存储&#xff0c;为使用者提供“硬盘”文件系统存储&#xff1a;类似于NFS…

cst 导出z方向电场分布图的后处理方式(matlab origin)?

文章目录 一、使用Matlab进行后处理&#xff1a;二、使用Origin进行后处理 当我们使用Matlab或Origin对CST导出的Z方向电场分布图进行后处理时&#xff0c;可以这样做&#xff1a; 一、使用Matlab进行后处理&#xff1a; 1. 导入数据&#xff1a; 使用Matlab的文件读取函数&am…

【数据分析专栏之Python篇】二、Jupyer Notebook安装配置及基本使用

文章目录 前言一、Jupter Notebook是什么1.1 简介1.2 组成部分1.3 Jupyter Notebook的主要特点 二、为什么使用Jupyter Notebook?三、安装四、Jupyter Notebok配置4.1 基本配置4.2 配置开机自启与后台运行4.3 开启代码自动补全 五、两种键盘输入模式5.1 编辑模式5.2 命令模式5…

13.python设计模式【策略者模式】

内容&#xff1a;定义一系列的算法&#xff0c;把它们一个一个的封装起来&#xff0c;并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化。角色&#xff1a; 抽象策略&#xff08;Strategy&#xff09;具体策略&#xff08;ConcreteStrategy&#xff09;上下文…