首页 > 编程语言 >蓝桥杯备考冲刺必刷题(C++) | 3791 珠宝的最大交替和

蓝桥杯备考冲刺必刷题(C++) | 3791 珠宝的最大交替和

时间:2024-06-16 09:33:31浏览次数:24  
标签:珠串 小莉 int 3791 C++ 蓝桥 abs ans odd

学习C++从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。

附上汇总贴:蓝桥杯备考冲刺必刷题(C++) | 汇总-CSDN博客


【题目描述】
小莉是一位珠宝设计师,她非常喜欢玩珠子。她有一个长度为 N N N的珠串 A A A,每个珠子有不同的颜色和大小,她想要用这个珠串来设计一款新的珠宝。
她将该珠串的交替和定义为:
S = ∣ A 1 ∣ − ∣ A 2 ∣ + ∣ A 3 ∣ − ∣ A 4 ∣ + ⋯ + ( − 1 ) N − 1 ⋅ ∣ A N ∣ S = |A_1|-|A_2|+|A_3|-|A_4|+\dots + (-1)^{N-1}\cdot |A_N| S=∣A1​∣−∣A2​∣+∣A3​∣−∣A4​∣+⋯+(−1)N−1⋅∣AN​∣
小莉可以进行以下操作,但最多只能进行一次:
选择两个位置 i i i和 j ( 1 ≤ i < j ≤ N ) j(1\le i\lt j\le N) j(1≤i<j≤N),交换 A i A_i Ai​和 A j A_j Aj​。
为了让新的珠宝更加漂亮,小莉想要让交替和最大。请你帮她找出最大的交替和。
其中, ∣ X ∣ |X| ∣X∣表示珠子X的大小的绝对值。
【输入】
第一行包含一个整数 N N N,表示珠串 A A A的长度。
第二行包含 N N N个用空格分隔的整数,表示珠串 A A A中每个珠子的大小。
【输出】
输出一行,表示小莉最多可以通过进行操作获得的最大交替和。
【输入样例】

7
-3 -2 -1 0 1 2 3

【输出样例】

6

【代码详解】
[图片]

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n;
int odd[100005], even[100005], ans;
bool cmp(int x, int y)
{
    return x>y;
}
signed main()
{
    cin >> n;
    int cur1=0, cur2=0;  // 定义奇数数组和偶数数组的下标
    for (int i=1; i<=n; i++) {
        int t;
        cin >> t;
        if (i%2==1) {  // 是奇数就放到奇数数组中
            odd[++cur1] = abs(t);
            ans += abs(t);
        } else {  // 是偶数就加到偶数数组中
            even[++cur2] = abs(t);
            ans -= abs(t);
        }
    }
    if (n==1) {  // 如果只有1个珠子的情况
        cout << odd[1] << endl;
        return 0;
    }
    sort(even+1, even+cur2+1, cmp);  // 取出偶数数组的最大值
    sort(odd+1, odd+cur1+1);  // 取出奇数数组的最小值
    if (even[1]>odd[1]) {  // 只有当偶数大于奇数时,才操作
       ans = ans - odd[1] + even[1] + even[1] - odd[1];
    }
    cout << ans << endl;
    return 0;
}

【运行结果】

7
-3 -2 -1 0 1 2 3
6

标签:珠串,小莉,int,3791,C++,蓝桥,abs,ans,odd
From: https://blog.csdn.net/guolianggsta/article/details/136716831

相关文章

  • 蓝桥杯备考冲刺必刷题(C++) | 3250 最大的卡牌价值
    学习C++从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。附上汇总贴:蓝桥杯备考冲刺必刷题(C++)|汇总-CSDN博客【题目描述】给定nnn副卡牌,每张卡牌具......
  • 算法02 递归算法及其相关问题【C++实现】
    递归在编程中,我们把函数直接或者间接调用自身的过程叫做递归。递归处理问题的过程是:通常把一个大型的复杂问题,转变成一个与原问题类似的,规模更小的问题来进行求解。递归的三大要素函数的参数。在用递归解决问题时,要合理地去设计函数的参数,达到当前问题与子问题之间的变化,可......
  • C++全栈聊天项目(22) 气泡聊天对话框
    气泡聊天框设计我们期待实现如下绿色的气泡对话框对于我们自己发出的信息,我们可以实现这样一个网格布局管理NameLabel用来显示用户的名字,Bubble用来显示聊天信息,Spacer是个弹簧,保证将NameLabel,IconLabel,Bubble等挤压到右侧。如果是别人发出的消息,我们设置这样一个网......
  • 【C++学习笔记 3】指针
    指针的本质指针实际上就是一个整数,存储着一个内存地址。不必执着于用“类型”的概念区分,那只是为了方便设计出来的,所有的指针,本质上都是一个整数,存储着一个内存的地址。#include<iostream>#defineLOG(x)std::cout<<x<<std::endlintmain(){ intvar=8; ......
  • 2024华为OD机试真题-堆内存申请-(C++/Python)-C卷D卷-100分
    2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)题目描述有一个总空间为100字节的堆,现要从中新申请一块内存,内存分配原则为:优先紧接着前一块已使用内存,分配空间足够且最接近申请大小的空闲内存。输入描述第1行是1个整数,表示期望申请的内存字节数第2到第N行是用空格......
  • 2024华为OD机试真题-围棋的气-(C++/Python)-C卷D卷-100分
     2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++) 题目描述围棋棋盘由纵横各19条线垂直相交组成,棋盘上一共19x19=361个交点,对弈双方一方执白棋,一方执黑棋,落子时只能将棋子置于交点上。“气”是围棋中很重要的一个概念,某个棋子有几口气,是指其上下左右方向四个相......
  • 程序设计与算法(三)C++:第五章poj代码
    课程:北京大学程序设计与算法(三)   MOOCOJ:OpenJudge019:全面的MyString这个题也是有很多的成员函数,我们来从主函数分析一下:MyStrings1("abcd-"),s2,s3("efgh-"),s4(s1);//无参构造,有参构造,复制可以不写 MyStringSArray[4]={"big","me","about","take"......
  • 从零开始学算法/C++/第三天
    懒标记好简单,原理就是使变化的叠加尽可能远离叶子节点,也就是说从叶子节点往根节点走,这条路径上最多只有一个地方有懒标记,要将这个懒标记尽可能远离叶子节点,拖延症了属于是,这样显然时间复杂度相较不用懒标记的要低很多。算法竞赛进阶指南里面称懒标记为延迟标记,这两种称呼都很......
  • c++_0基础_讲解6 循环语句
    for循环C++中的for循环是一种控制流语句,用于重复执行一组语句,直到指定条件为假。它是C++中最常用的循环结构之一,提供了灵活的控制循环的方式,能够在各种情况下进行迭代和循环操作。for循环由三个重要部分组成:初始化、条件和迭代器。其语法形式如下:for(初始化;条件;迭代器)......
  • 能量项链(C++)
    题目描述在喵星星球上,每个喵星人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是喵星人吸收能量的一种......