A. The Enchanted Forest #769 div1

news2024/11/15 3:07:21

Problem - A - Codeforces

题意:

给你一串序列,任意从什么地方开始,给你k秒时间,让你算最大价值

每一秒时间按顺序你可以做:

①移动到|x-y|<=1的地方

②取走这个位置上所有的数

③每个位置+1

原来是0秒,从第一秒开始计时

感悟:

这一题我的思维有点混乱,不是特别明朗,但是该考虑的点我都考虑了一遍,可能在想其他的时候,原来想的忘记了...比如我刚想到分情况,又跳到了另一个点上,最后忘记了分情况,以后记得把重点写下来。分析的时候思路也不是特别明朗,奇怪的思路这里就先不说了,分析一下正解

分析:

首先这样子的应该先想到分情况去讨论,k<=n和k>n的情况,因为两种走的方式完全不一样

第一种k<=n貌似更好考虑一些:

假设没有增加的量,那走法并不会出现原地跳或者来回跳,可以想到的是连续的k个地方去取,然后我们可以看看加上增加量,取连续k个位置是不是正解

因为如果没有增加量,每个区间都是定值。这里可以单独考虑一下增加值:增加量与时间成正比,以位置作为观察量可知,走到某个位置的时间t[i]是固定的,所以不管是不是来回走每个位置所取走的量都是最后一次走到那个位置t[i]-1

所以看看是否正解:总的价值即\sum (t[i]-1)------->为x个数连加,如果存在来回跳的话,每一个位置取最后走到的t[i]-1,这些和相加,最大的秒数只有k秒,来回跳,经过的越少,所以起步越大,例如:3+4+...+7,如果不会来回跳就是0+1+2+3+4+...+7,贪心策略就可以看出来了。所以在这种情况,不可能存在来回跳的情况,后面的时间是定值,最大价值即一段连续k个值的和最大,这个好说,直接遍历一遍就好

第二种情况k>n:

那这个肯定有来回跳的情况了,这个我们依然需要把全部的数加上,最大的增加值即为k-1+k-2+k-3+...+k-n+1,因为相加的个数都是n,当然越大越好,起步越大越好。

具体见代码:

#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#define IOS ios::sync_with_stdio(false), cin.tie(0);
#include<iostream>
#include<map>
#include<set> 
#include<cstdio>
#include<cstring>
#include<vector>
#include<stack>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<int,int> PAII;
const int N=2e6+10,M=5050,INF=1e18,mod=1e9+7;
int a[N],s[N];
signed main(){
    IOS;
    int T;
    //T=1;
    cin>>T;
    while(T--)
    {
    	int n,k;
    	cin>>n>>k;
    	for(int i=1;i<=n;i++)
    	{
			cin>>a[i];
			s[i]=s[i-1]+a[i];
		}
		if(k<=n)
		{
			int maxn=-1;
			for(int i=1;i+k-1<=n;i++)
			{
				int l=i,r=i+k-1;
				int x=s[r]-s[l-1];
				maxn=max(maxn,x);
			}
			for(int i=1;i<=k;i++) maxn+=i-1;
			cout<<maxn<<"\n";
		}
		else
		{
			int res=s[n];
			for(int i=1;i<=n;i++) res+=k-i;
			cout<<res<<"\n"; 
		}
	}
    return 0;
} 
/*


*/ 

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

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

相关文章

opencv-python常用函数解析及参数介绍(七)——边缘检测

边缘检测前言1.基本概念1) 滤波2) 计算梯度3) 非极大值抑制4) 双阈值检测2.opencv中的边缘检测效果展示分析对比3.结尾前言 在之前的文章中我们介绍了使用膨胀和腐蚀、计算图像梯度的方式来获取图像的轮廓&#xff0c;本篇文章将介绍另外一种可以获取图像轮廓的方法——边缘检…

再说原型链

关于原型链&#xff0c;已经被无数次的提起&#xff0c;每次回顾都有新的理解&#xff0c;今天我们再来说说原型链。 我们知道&#xff0c;每一个javascript对象&#xff08;除了null&#xff09;在被创建的时候都会与另一个对象关联起来&#xff0c;这个对象就是我们所说的原型…

【C++进阶】二叉搜索树

文章目录二叉搜索树概念二叉搜索树操作二叉搜索树的实现每个节点的结构插入查找删除二叉搜索树的所有代码(包括测试)版本一版本二test.cpp二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&a…

Linux环境下gdb程序调试

目录gdb介绍进入gdb调试环境指令学习l(list)指令b(break)指令info b指令d指令r(run)指令n(next)指令s(step)指令c(continue)指令bt(breaktrace)指令finish指令p(print)指令display指令undisplay指令until指令disable命令enable命令这篇文章将会介绍gdb以及一些常用的gdb调试指令…

3.移动端百分比布局练习-京东首页

访问地址 https://youthddup.gitee.io/myproject/ 1、项目目录结构 2、注意 &#xff08;1&#xff09;设置视口标签以及引入初始化样式 &#xff08;2&#xff09;二倍精灵图缩放 先把精灵图等比缩放原来的一半 然后再测精灵图位置 代码里background-size置为原来的一半 &a…

typescript 数组操作

使用变量来存储值会带来以下限制&#xff1a; 变量本质上是标量。换言之&#xff0c;一个变量声明变量声明一次只能包含一个。这意味着在程序中存储n个值需要n个变量声明。因此&#xff0c;当需要存储更大的值集合时&#xff0c;使用变量是不可行的。 程序中的变量以随机顺序分…

当下一场数字化的浪潮,正在各行各业深刻上演着

一场数字化的浪潮&#xff0c;正在各行各业深刻上演着。在零售领域&#xff0c;亦不例外。以往&#xff0c;提及零售&#xff0c;我们更多地想到的是&#xff0c;各式各样的电商平台&#xff0c;我们看到的是&#xff0c;各式各样的电商模式&#xff1b;现在&#xff0c;提及零…

测试用例设计-淘宝购物车

测试人员和开发人员产生争执了怎么办&#xff1f; ① 先检查自身&#xff0c;是否BUG描述不清楚 ② 站在用户的角度考虑问题 ③ BUG定级要有理有据 ④ 提高自身的技术能力和业务水平&#xff0c;最好同时提出解决方案。 ⑤ 开发人员不接受时&#xff0c;不要争吵&#xff0c;可…

YOLOv5更换骨干网络之 PP-LCNet

论文地址&#xff1a;https://arxiv.org/abs/2109.15099 代码地址&#xff1a;https://github.com/ngnquan/PP-LCNet 我们提出了一种基于MKLDNN加速策略的轻量级CPU网络&#xff0c;名为PP LCNet&#xff0c;它提高了轻量级模型在多个任务上的性能。本文列出了在延迟几乎不变的…

YOLOv5更换骨干网络之 EfficientNet-B0

论文地址&#xff1a;https://arxiv.org/abs/1905.11946 代码地址&#xff1a;https&#xff1a;//githeb.com/TensorFlow/tpu/tree/master/Models/Offical/Efficientnet 卷积神经网络(ConvNet)通常是在固定的资源预算下开发的&#xff0c;如果有更多的资源可用&#xff0c;则…

如何从macOS ventura降级到 macOS Monterey?这两大方法可以帮到你

苹果发布了macOS 13 Ventura的正式版系统&#xff0c;增加了许多实用性的功能&#xff0c;大家纷纷下载更新最新版本的系统。但根据许多已安装ventura的用户反馈&#xff0c;这个版本的MacOS系统还不够成熟&#xff0c;应该有不少bug还没有修复过来&#xff0c;从而求助小编分享…

c#入门-泛型约束

泛型约束 使用泛型时会假设泛型占位符是任何类型。 但因为它被假设是任何类型&#xff0c;所以使用起来有很大的限制。只有所有类型都有的功能&#xff0c;他才能用。 为了满足所有的可能类型&#xff0c;可用的操作非常少。 为此我们可以为泛型占位符添加约束。虽然会让能兼…

大型项目迭代流程

一、回顾目标 总目标&#xff1a; 年底上线完成100% 结果&#xff1a; 年底上线并开量验证过成功&#xff0c;完成率100% 阶段目标A&#xff1a; 10月底项目全流程开发完成&#xff0c;并提测出票前流程 结果&#xff1a;10月21日项目开发完成100%&#xff0c;10月25日前…

基于残差神经网络的交通标志识别算法研究与应用实现

问题&#xff1a; 从图像中识别交通标志对于自动驾驶至关重要。要想实现自动驾驶&#xff0c;车辆必须了解并遵守所有交通规则。当前&#xff0c;特斯拉、谷歌、梅赛德斯-奔驰、丰田、福特、奥迪等许多大公司都在研究自动驾驶。因此&#xff0c;为了实现这项技术的准确性&…

pandas的series创建和pandans的dataFrame创建

一&#xff1a;series和读取外部数据 1.1pandas的series的了解 1.1.1 为什么要学习pandas numpy能够帮我们处理处理数值型数据&#xff0c;但是这还不够。很多时候&#xff0c;我们的数据除了数值之外&#xff0c;还有字符串&#xff0c;还有时间序列等 比如&#xff1a;我们通…

显式利用用户画像的多兴趣建模

显式利用用户画像的多兴趣建模 目前在多兴趣建模中&#xff0c;用户侧的特征包括用户基础画像特征&#xff08;年龄、性别、地域等&#xff09;、用户在当前场景的静态兴趣画像特征&#xff08;短期兴趣画像、长期兴趣画像&#xff09;、交互的历史正向行为序列特征&#xff0…

【Javassist】快速入门系列13 使用Javassist获取注解

系列文章目录 01 在方法体的开头或结尾插入代码 02 使用Javassist实现方法执行时间统计 03 使用Javassist实现方法异常处理 04 使用Javassist更改整个方法体 05 当有指定方法调用时替换方法调用的内容 06 当有构造方法调用时替换方法调用的内容 07 当检测到字段被访问时使用语…

MySQL性能优化三 一条SQL在MySQL中执行的过程

一 MySQL的内部组件结构 大体来说&#xff0c;MySQL 可以分为 Server 层和存储引擎层两部分。 1.1 service层 主要包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&#xff0c;以及所有的内置函数&#xff08;如日期、时间、数学…

Easy-Captcha验证码 生成以及校验(简单易懂)

目录说明pom引入详解参数类使用easy-captcha 中提供了下面几种类源码说明Captcha使用验证图解源码测试GitHub说明 Java图形验证码&#xff0c;支持gif、中文、算术等类型&#xff0c;可用于Java Web、JavaSE等项目 pom引入 <dependency><groupId>com.github.whvc…

【C++】 bitset(位图)的使用

目录 一、bitset的基本介绍 1. 位图的概念 2. 位图的应用 二、biset的基本使用 1. bitset的成员函数 2. 基本使用介绍 1. 定义方式 2. 成员函数的使用 一、bitset的基本介绍 1. 位图的概念 所谓位图&#xff0c;就是用每一位来存放某种状态&#xff0c;适用于海量数…