B. Array Walk(贪心)

news2025/1/20 10:50:58

Problem - 1389B - Codeforces

 

给你一个数组a1,a2,...,an,由n个正整数组成。

最初,你站在索引1处,分数等于a1。你可以进行两种移动。

向右移动--从你当前的索引x走到x+1,并将ax+1加入你的分数。这个动作只有在x<n时才能进行。
向左移动 - 从你当前的索引x到x-1,并将ax-1加入你的分数。这步棋只有在x>1时才能进行。此外,你不能连续执行两个或更多的向左移动。
你要正好执行k步棋。另外,其中向左移动的次数不应超过z次。

你能达到的最高分数是多少?

输入
第一行包含一个整数t(1≤t≤104)--测试案例的数量。

每个测试案例的第一行包含三个整数n,k和z(2≤n≤105, 1≤k≤n-1, 0≤z≤min(5,k))--数组中的元素数,你应该执行的总步数和你可以执行的最大向左步数。

每个测试案例的第二行包含n个整数a1,a2,...,an(1≤ai≤104)--给定的数组。

所有测试案例的n之和不超过3⋅105。

输出
打印t个整数--对于每个测试案例,如果你总共走了k步棋,其中不超过z步棋是向左的,并且没有两步或更多步棋是向左的,则输出你能达到的最大分数。

例子
输入复制
4
5 4 0
1 5 4 3 2
5 4 1
1 5 4 3 2
5 4 4
10 20 30 40 50
10 7 3
4 6 8 2 9 9 7 4 10 9
输出拷贝
15
19
150
56
注意
在第一个测试案例中,你根本不允许向左移动。所以你向右走了四步,得到的分数是a1+a2+a3+a4+a5。

在第二个例子中,你可以向左移动一次。所以我们可以按照这些动作:右、右、左、右。得分将是a1+a2+a3+a2+a3。

在第三个例子中,你可以向左移动四次,但无论如何这都不是最佳选择,你可以直接向右移动四次,得到的分数是a1+a2+a3+a4+a5。

题解:

dp不会写,我们想想贪心的策略

如果z为0,我们只能往右走选k个不需要讨论

如果我们可以往左走,那么我们应该在相加最大的两个上反复走,所以直接枚举所有相邻两个找最大即可

#include<iostream>
#include<algorithm>
#include<string>
#include<queue>
#include<vector>
#include<map>
#include<cstring>
#include<cmath>
#include<set>
using namespace std;
#define int long long
typedef pair<int,int> PII;
int a[200050];
void solve()
{
	int n,k,z;
	cin >> n >> k >> z;
	for(int i = 1;i <= n;i++)
	cin >> a[i];
	int ans = 0,sum = 0,mx = 0;
	k++;
	for(int i = 1;i <= k;i++)
	{
		sum += a[i];
		if(i < n)
		mx = max(mx,a[i] + a[i+1]);
		ans = max(ans,min((k-i)/2,z)*mx+sum);
	}
	cout << ans<<"\n";
}
//1 2 3 4 5
//
signed main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);
//	cout.tie(0);
	int t = 1;
	cin >> t;
    while(t--)
	{

		solve();
	} 
}

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

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

相关文章

黑客窃取 4 亿 Twitter 用户记录,勒索马斯克破财消灾

整理 | 何苗 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 上周五&#xff0c;一个用户名为 Ryushi 的用户在黑客论坛 Breached 上发布了一个帖子声称&#xff0c;已成功利用漏洞抓取了超 4 亿 Twitter 用户数据并在线出售。 为了证明数据的真实性&am…

spring cloud gateway网关转发websocket请求

springcloud gateway网关是所有微服务的统一入口。 1、springcloud gateway关键术语 Route&#xff1a;路由&#xff0c;网关配置的基本组成模块。一个Route模块由一个 ID&#xff0c;一个目标 URI&#xff0c;一组断言和一组过滤器定义。如果断言为真&#xff0c;则路由匹配…

经营报表-FineReport配置Oracle外接数据库(2)

1. 配置外接数据库 1.1 外接数据库配置入口 外接数据库的配置入口&#xff0c;有三种形式&#xff1a; 1&#xff09;超级管理员第一次登录数据决策系统时&#xff0c;即可为系统配置外接数据库。如下图所示&#xff1a; 2&#xff09;对于使用内置数据库的系统&#xff0c;管…

蓝桥杯嵌入式|第十三届蓝桥杯嵌入式省赛程序设计试题及其题解

题目 十三届省赛是要制作一个可由串口设置密码的密码锁。在本场比赛中&#xff0c;我们将用到LED模块、按键模块、串口模块、定时器的PWM模块以及官方会提供源码的LCD模块。下面就请看原题&#xff1a; 题解 在正式题解前&#xff0c;大家需要注意以下几点&#xff1a; 由于LCD…

《计算机网络》——第二章知识点

物理层:在连接各种计算机的传输媒体上传输数据比特流&#xff0c;确定与传输媒体接口有关的一些特性。1.机械特性 定义物理连接的特性&#xff0c;规定物理连接时所采用的规格、接口形状、引线数目、引脚数量和排列情况。 2.电气特性 规定传输二进制位时&#xff0c;线路上信…

【深度学习框架TensorFlow】使用TensorFlow框架构建全连接的神经网络,实现手写数字识别

文章目录一.TensorFlow1.1 内容介绍二.开始实验2.1TensorFlow的基本使用2.2基于全连接神经网络的手写数字识别2.3 结论一.TensorFlow 使用深度学习框架TensorFlow。 目标&#xff1a; 1.了解TensorFlow的基本用法&#xff1b; 2.学习使用TensorFlow构建全连接的神经网络&…

双周赛(三)

T1&#xff1a; 如果你仍然再用二指禅打字&#xff0c;那我建议你重新学习打字&#xff0c;这样你打字会更快&#xff0c;感觉更舒适和愉快。 有很多网站教授正确的打字。下图描述了基本原理: 用同一手指按压颜色相同的键。黄色键需要用小指按压&#xff0c;蓝色的用无名指&a…

最新 iOS 更新后 iPhone 联系人和数据丢失/丢失

我两天前做了最新的更新&#xff0c;现在我有丢失的联系人。帮助&#xff01;&#xff01; 许多 iPhone 用户犹豫是否将他们的设备升级到最新的 iOS 系统有一个&#xff08;也许是几个&#xff09;充分的理由。每次 iOS 发布后&#xff0c;总会有新功能震撼我们的世界。但是&am…

Unity 小积累

** Unity 学习小积累 ** 1.FindObjectsOfType和FindObjectOfType 前者返回所有个体&#xff08;集合&#xff09; 后者返回第一个个体 &#xff08;单个&#xff09; 2.uinty打包问题 打包webgl遇到了 实际上和py没有关系 c盘不够了 单纯 3.Unity 默认下载位置 坑 1.Uni…

【css样式】页面实现一侧固定一侧滚动的效果,到底部后一起滚动

文章目录position的定位类型position的定位类型 static&#xff1a;默认值&#xff0c;没有定位&#xff0c;遵循正常的文档流 fixed&#xff1a;固定定位&#xff0c;元素的位置是相对于浏览器窗口 relative&#xff1a;相对定位&#xff0c;相对于其正常的位置&#xff0c;移…

BOSS直聘自动投简历的实现过程

这两年疫情&#xff0c;公司业务越来越差&#xff0c;必须得准备后路了&#xff0c;每天睡前都会在直聘上打一遍招呼&#xff0c;一直到打哈欠有睡意为止...,这样持续了一周&#xff0c;发现很难坚持&#xff0c;身为一名资深蜘蛛侠&#xff0c;怎么能这样下去呢&#xff1f;于…

3D模型的生成式AI

生成式 AI 席卷了 2022 年&#xff0c;我们最近决定 Physna 不应错过这个热点。 因此&#xff0c;尽管生成 AI 并不是我们的商业模式—Physna 是一家 3D 搜索和分析公司&#xff0c;专注于 AR/VR 和制造中的工程和设计应用—我们还是决定为 3D 模型和场景生成 AI 构建一个非常基…

Node.js——初识Node.js与内置模块(一)

1.初识 Node.js 1.1 浏览器中的 JavaScript运行环境 1.浏览器中的 JavaScript 的组成部分 2.为什么 JavaScript 可以在浏览器中被执行 3.为什么 JavaScript 可以操作 DOM 和 BOM 4.浏览器中的 JavaScript 运行环境 Javascript可以借助node,js进行后端开发 1.2 Node.js 简介 …

virtio前端驱动通知机制分析

virtio前端驱动通知机制分析 virtio 前后端主要通过PCI配置空间的寄存器来完成通信&#xff0c;I/O 请求的数据地址存放于 vring 中&#xff0c;并通过共享vring这个区域来实现 I/O 请求数据的共享。 由上图可知&#xff0c;虚拟机与主机之间交互用到了两个结构体&#xff1a;p…

智能网联汽车行业发展

智能网 联汽车信息安全发展趋势 智能网联汽车行业发展 根据工信部发布的《国家车联网产业标准体系建设 指南&#xff08;智能网联汽车&#xff09;》的定义&#xff0c;智能网联汽车是指搭载先进的车载传感器 、控制器、执行器等装置&#xff0c;并融合现代通信与网络技术&a…

明道云联合思迈特打造会员管理应用可视化联合解决方案

背景介绍 明道云在协助企业数字化转型过程中&#xff0c;发现客户对利用业务数据形成企业级报表和数据可视化大屏的需求十分强烈。为了满足这种需求&#xff0c;企业通常需要成立专门的数据分析团队&#xff0c;但这需要巨大的人力和财力投入&#xff0c;时间周期也较长。为了…

信息数智化招采系统源码——信息数智化招采系统

信息数智化招采系统 服务框架&#xff1a;Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构&#xff1a;VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术&#xff1a;Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、Stre…

React 学习笔记总结(五)

文章目录1. React 嵌套路由(多级路由)2. params参数 与 query参数3. React路由组件 传递params参数数据4. React路由组件 传递search参数5. React路由组件 传递search参数6. React路由组件 特殊情况: 刷新页面7. React路由 的 push 和 replace8. React的 编程式路由9. React路由…

Transformer架构:位置编码

2017年&#xff0c;Google等人提出了Vaswani提出了一种新颖的纯注意力序列到序列架构&#xff0c;闻名学术界与工业界的Transformer架构横空出世&#xff0c;它的可并行化训练能力和优越的性能称为自然语言处理领域和计算机视觉领域研究人员的热门选择&#xff0c;本文将重点讨…

elasticsearch--Master选举

最近一直在学习elasticsear相关的东西&#xff0c;在这学习的过程中记录一下比较重要的学习内容。方便以后看的时候加深印象。 假如宕机的节点是Master节点 下面是Maste节点选举 的流程图 在findMaster的方法中每隔一段时间就会ping所有的节点&#xff0c;看看有没有哪个节…