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

【每日一题】—— 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上的题目,想要学习算法的友友们千万别错过了,有什么疑问欢迎大家在评论区留言或者私信博主!

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

相关文章:

  • 【具身智能评估1】具身视觉语言规划(EVLP)仿真环境汇总
  • Vulkan渲染引擎开发教程 一、开发环境搭建
  • python基础练习题库实验3
  • Canal+Kafka实现MySQL与Redis数据同步(一)
  • 贪吃蛇小游戏
  • typora使用PicGo自动上传图片到chevereto图床
  • Docker简介
  • 选硬币该用动态规划
  • 【漏洞复现】泛微e-Weaver SQL注入
  • ubuntu中/etc/rc.local和/etc/init.d/rc.local的区别是什么
  • zookeperkafka学习
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • Linux操作系统使用及C高级编程-D5Linux shell命令(进程管理、用户管理)
  • 黑马React18: 基础Part 1
  • 遗传算法GA-算法原理与算法流程图
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • Codepen 每日精选(2018-3-25)
  • es6
  • leetcode386. Lexicographical Numbers
  • leetcode98. Validate Binary Search Tree
  • MobX
  • win10下安装mysql5.7
  • zookeeper系列(七)实战分布式命名服务
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端性能优化--懒加载和预加载
  • 人脸识别最新开发经验demo
  • 深度学习入门:10门免费线上课程推荐
  • 算法---两个栈实现一个队列
  • 怎么将电脑中的声音录制成WAV格式
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 积累各种好的链接
  • 树莓派用上kodexplorer也能玩成私有网盘
  • #pragma预处理命令
  • (1)SpringCloud 整合Python
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (南京观海微电子)——COF介绍
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (原)本想说脏话,奈何已放下
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • ***测试-HTTP方法
  • *上位机的定义
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .mysql secret在哪_MYSQL基本操作(上)
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Core Web APi类库如何内嵌运行?
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .net(C#)中String.Format如何使用
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件