【每日一题】—— C. Yarik and Array(Codeforces Round 909 (Div. 3))(贪心)

🌏博客主页:PH_modest的博客主页
🚩当前专栏:每日一题
💌其他专栏:
🔴 每日反刍
🟡 C++跬步积累
🟢 C语言跬步积累
🌈座右铭:广积粮,缓称王!

一.题目描述

在这里插入图片描述

题目大意:

子数组是数组的连续部分。
Yarik 最近发现了一个由 n n n 个元素组成的数组 a a a ,于是他对寻找一个非空子数组的最大和非常感兴趣。然而,Yarik 不喜欢奇偶校验相同的连续整数,因此他选择的子数组必须有相邻元素的交替奇偶校验。
例如, [ 1 , 2 , 3 ] [1, 2, 3] [1,2,3] 可以接受,但 [ 1 , 2 , 4 ] [1, 2, 4] [1,2,4] 不行,因为 2 2 2 4 4 4 都是偶数且相邻。
你需要帮助 Yarik 找出这样一个子数组的最大和。

题目链接:

C. Yarik and Array(Codeforces Round 909 (Div. 3))

二.思路分析

这题就是贪心求解子序列最大和的题目,只不过多了一点限制条件;

  1. 定义一个maxx先求取当前数组中的最大值
  2. 定义一个sum求取当前子序列的和
  3. 当sum<0的时候需要重新计算和,因为负数加上一个数只会越来越小;同时如果相邻的两数同为奇数或者同为偶数也是不满足条件的(abs(s[i]%2) == abs(s[i-1]%2)),也需要重新计算。需要注意的是元素可能为负数,所以取模的时候需要求取绝对值
  4. 然后将maxx和sum进行比较,求取较大的值放入maxx

三.代码展示

//https://codeforces.com/contest/1899/problem/C
//首先需要判断奇偶,然后用sum存储当前序列的和,如果sum<0就重新计算(因为加上只会更小),求完和之后和之前的值进行比较,取最大的值
//
#include<iostream>
#include<algorithm>
#include<string>
#include<map>
#include<queue>
#include<vector>
#include<cstring>
#define int long long
using namespace std;

int s[200020];

void solve()
{
    int n;
    cin>>n;
    int maxx=-1e9;
    for(int i=0;i<n;i++)
    {
    	cin>>s[i];
    	maxx=max(maxx,s[i]);
	}
	int sum=s[0];
	for(int i=1;i<n;i++)
	{
		if(sum<0||abs(s[i]%2)==abs(s[i-1]%2))
		{
			sum=s[i];
		}
		else
		{
			sum+=s[i];
		}
		maxx=max(maxx,sum);
	}
	cout<<maxx<<"\n";
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}



最后:

每日一题系列旨在养成刷题的习惯,所以对代码的解释并不会特别详细,但足够引导大家写出来,选的题目都不会特别难,但也不是特别简单,比较考验大家的基础和应用能力,我希望能够将这个系列一直写下去,也希望大家能够和我一起坚持每天写代码。

之后每个星期都会不定期更新codeforces和atcoder上的题目,想要学习算法的友友们千万别错过了,有什么疑问欢迎大家在评论区留言或者私信博主!

在这里送大家一句话:广积粮,缓称王!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】类与对象(上)

目录 1. 面向过程和面向对象初步认识 2. 类的引入 3. 类的定义 4. 类的访问限定符及封装 4.1 访问限定符 4.2 封装 5. 类的作用域 6. 类的实例化 7. 类对象模型 7.1 如何计算类对象的大小 7.2 类对象的存储方式猜测 7.3 结构体内存对齐规则 8. this指针 8.1 this指…

Day34力扣打卡

打卡记录 合并石头的最低成本&#xff08;区间DP&#xff09; 链接 与多边形的三角形问题相同&#xff0c;将大问题化小问题&#xff0c;再用中间节点不断地寻找最值。 class Solution:def mergeStones(self, stones: List[int], k: int) -> int:n len(stones)if (n - 1…

wangEditor富文本编辑器使用

一、官网 开源 Web 富文本编辑器&#xff0c;开箱即用&#xff0c;配置简单 二、下载安装 npm install --save wangeditor/editor-for-vue 三、在vue中使用 3.1、抽离组件editor.vue 在工程的components目录下新建组件editor <template><div><Toolbar:edi…

【C++入门到精通】右值引用 | 完美转发 C++11 [ C++入门 ]

阅读导航 引言一、左值引用和右值引用1. 什么是左值&#xff1f;什么是左值引用&#xff1f;2. 什么是右值&#xff1f;什么是右值引用&#xff1f;3. move( )函数 二、左值引用与右值引用比较三、右值引用使用场景和意义四、完美转发std::forward 函数完美转发实际中的使用场景…

SVG的viewBox、width和height释义, 示例及代码

svg的是没有边界的&#xff0c;svg画布只是用于展示svg世界中某一个范围的内容&#xff0c;而对于超过了svg画布范围的内容&#xff0c;则会被遮挡。默认svg画布默认显示世界坐标下原点坐标的width*height面积的矩形视野。 ​ 我们可以通过viewBox来修改默认的显示配置&#…

图新地球地图导入操作步骤

1、下载图源&#xff0c;如下&#xff1a; 2、将其全部复制或部分复制&#xff0c;然后回到桌面&#xff0c;打开文件所在位置&#xff0c;如下&#xff1a; 3、将复制的数据粘贴到文件夹下&#xff0c;具体如下&#xff1a; 4、复制到路径如下&#xff1a; 5、复制结果如下&am…

Spring Boot - filter 的顺序

定义过滤器的执行顺序 1、第一个过滤器 import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; impor…

linux如何使用shell远程连接

简介&#xff1a;本文的一切条件基于redhat的linux操作系统。 1、创建虚拟机&#xff1a; 如有需要&#xff0c;请转至【linux基础】在VMware上安装RHEL9详细教程_融社的博客-CSDN博客 &#xff08;如若侵权&#xff0c;该篇立删&#xff09; 2、使用命令查看网段信息 打…

LeetCode【4】寻找两个正序数组中位数

题目&#xff1a; 思路&#xff1a; https://blog.csdn.net/a1111116/article/details/115033098 代码&#xff1a; public double findMedianSortedArrays(int[] nums1, int[] nums2) {int[] ints Arrays.copyOf(nums1, nums1.length nums2.length);System.arraycopy(nums2…

Linux网络——HTTP

一.应用层 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层. 我们上一次写的网络版本计算器就是一个应用层的网络程序。 我们约定了数据的读取&#xff0c;一端发送时构造的数据, 在另一端能够正确的进行解析, 就是ok的. 这种约定, 就是应…

java 访问sqlserver 和 此驱动程序不支持jre1.8错误

sqlserver数据如下&#xff1b; TestSQL.java&#xff1b; import java.sql.*;public class TestSQL {public static void main(String[] args) throws ClassNotFoundException, SQLException {String driverName "com.microsoft.sqlserver.jdbc.SQLServerDriver";…

Golang起步篇(Windows、Linux、mac三种系统安装配置go环境以及IDE推荐以及入门语法详细释义)

Golang起步篇 Golang起步篇一. 安装Go语言开发环境1. Wondows下搭建Go开发环境(1). 下载SDK工具包(2). 解压下载的压缩包&#xff0c;放到特定的目录下&#xff0c;我一般放在d:/programs下(路径不能有中文或者特殊符号如空格等)(3). 配置环境变量步骤1&#xff1a;先打开环境变…

基于STM32的外部中断(EXTI)在嵌入式系统中的应用

外部中断&#xff08;External Interrupt&#xff0c;EXTI&#xff09;是STM32嵌入式系统中常见且重要的功能之一。它允许外部事件&#xff08;例如按键按下、传感器触发等&#xff09;通过适当的引脚触发中断&#xff0c;从而应用于各种嵌入式系统中。在STM32微控制器中&#…

Vulkan渲染引擎开发教程 一、开发环境搭建

一 安装 Vulkan SDK Vulkan SDK 就是我们要搞的图形接口 首先到官网下载SDK并安装 https://vulkan.lunarg.com/sdk/home 二 安装 GLFW 窗口库 GLFW是个跨平台的小型窗口库&#xff0c;也就是显示窗口&#xff0c;图形的载体 去主页下载并安装&#xff0c;https://www.glfw.…

搭建内部知识库,解决企业内部琐碎信息问题

企业内部面临着大量琐碎的信息&#xff0c;这些信息可能分散在各个部门、员工之间&#xff0c;导致查找和共享变得困难。这种情况下&#xff0c;搭建一个内部知识库可以解决这一问题。通过内部知识库&#xff0c;企业可以将琐碎的信息整理、分类&#xff0c;并提供一个集中存储…

Learning Perception Module

参考文章&#xff1a;自动驾驶开发者说|框架|如何单独运行apollo相机感知模块&#xff1f; - 知乎引言文章主要尝试了apollo框架下&#xff0c;视觉感知模块的单独运行&#xff0c;并利用离线的数据包进行检测实时展示结果。过程相对来说比较顺利。在加上已经用VScode搭建的单步…

nodejs微信小程序-慢性胃炎健康管理系统的设计与实现-安卓-python-PHP-计算机毕业设计

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

Gem5模拟器学习之旅——翻译自官网

文章目录 安装并使用gem5 模拟器支持的操作系统和环境依赖在 Ubuntu 22.04 启动(gem5 > v21.1)Docker获取代码用 SCons 构建用法首次构建 gem5gem5 二进制类型调试opt快速 常见错误错误的 gcc 版本Python 位于非默认位置未安装 M4 宏处理器Protobuf 3.12.3 问题 安装并使用g…

redis安装(Windows和linux)

如何实现Redis安装与使用的详细教程 Redis 简介 Redis是一个使用C语言编写的开源、高性能、非关系型的键值对存储数据库。它支持多种数据结构&#xff0c;包括字符串、列表、集合、有序集合、哈希表等。Redis的内存操作能力极强&#xff0c;其读写性能非常优秀&#xff0c;且…

gRPC 四模式之 双向流RPC模式

双向流RPC模式 在双向流 RPC 模式中&#xff0c;客户端以消息流的形式发送请求到服务器端&#xff0c;服务器端也以消息流的形式进行响应。调用必须由客户端发起&#xff0c;但在此之后&#xff0c;通信完全基于 gRPC 客户端和服务器端的应用程序逻辑。 为什么有了双向流模式…