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

蓝桥云客---蓝桥速算

3.蓝桥速算【算法赛】 - 蓝桥云课


问题描述

蓝桥杯大赛最近新增了一项娱乐比赛——口算大赛,目的是测试选手的口算能力。

比赛规则如下:

  • 初始给定一个长度为 N 的数组 A,其中第 i 个数字为 Ai​。
  • 随后数组会被隐藏,并进行 Q 次值域变换操作。
  • 每次操作给出两个数字 L,R (1≤L≤R≤N),表示对子数组 [L,R] 进行如下变换:
    • AL​ 增加 L。
    • AL+1​ 减少 L+1。
    • AL+2​ 增加 L+2。
    • AL+3​ 减少 L+3。
    • 以此类推,直到 R。

在所有操作完成后,选手需要快速计算出最终的数组之和,最快回答出正确答案的选手将会获得奖励,请你尝试解决这个问题。

输入格式

第一行输入两个整数 N,Q (1≤N,Q≤105) 表示数组长度和值域变换操作次数。

第二行输入 N 个整数 A1​,A2​,A3​,…,AN​ (1≤Ai​≤105) 表示数组的初始值。

接下来 Q 行,每行两个整数 L,R (1≤L≤R≤N) 表示一次值域变换操作。

输出格式

输出一个整数,表示值域变换操作完毕后数组之和。

输入样例

5 2
1 2 3 4 5
1 3
4 5

输出样例

16

思路:

暴力
代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll L = 1e5+10;
ll N,Q;
ll a[L];
int main(void)
{
    cin >> N >> Q;
    for(ll i = 1 ; i <= N ; i++)
    cin >> a[i];
    while(Q--)
    {
        ll l,r,cnt = 1;
        cin >> l >> r;
        for(ll i = l ; i <= r ; i++)
        {
            if(cnt % 2 != 0)
            {
                cnt++;
                a[i] += i;
            }
            else if(cnt % 2 == 0)
            {
                cnt++;
                a[i] -= i;
            }
        }
    }
    ll sum = 0;
    for(ll i = 1 ; i <= N ; i++)
    sum += a[i];
    cout << sum;
    return 0;
}

思路:

数学问题,注释写的清楚

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll L = 1e5+10;
ll N,Q;
ll a[L];
int main(void)
{
    ll sum = 0;
    cin >> N >> Q;
    for(ll i = 1 ; i <= N ; i++)
    {
        cin >> a[i];
        sum += a[i];
    }
    while(Q--)
    {
        ll l,r,cnt = 1;
        cin >> l >> r;
        ll s = r-l+1;
        if(s % 2 == 0)//长度为偶数,会出现s/2个-1 
        {
            sum -= s/2; 
        }
        else if(s % 2 != 0)//长度为奇数,会出现(1+s/2)个1 
        {
            sum += (l + s/2);
        }
    }
    cout << sum;
    return 0;
}

相关文章:

  • 深圳最专业的高端网站建设网站推广技巧和方法
  • 如何做公司的网站建设专业网站推广引流
  • 做网站 前端seo承诺排名的公司
  • 检查部门网站建设现在做网络推广好做吗
  • 牟长青 做网站推广的四个基本要点网络销售推广公司
  • 澄迈网站建设网店运营是做什么的
  • 网络安全L2TP实验
  • 对状态模式的理解
  • 14.2linux中platform无设备树情况下驱动LED灯(详细编写程序)_csdn
  • kubeadm部署 Kubernetes(k8s) 高可用集群 V1.28.2
  • 日志统计(双指针)
  • Chrome开发者工具实战:调试三剑客
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第六讲)
  • 新版pycharm如何实现debug调试需要参数的python文件
  • 【CSS】样式与效果
  • C语言之编译和debug工具
  • C++模板递归结构详解和使用
  • React中类组件的生命周期
  • 【51单片机】2-8【I/O口】数码管显示矩阵按键值
  • python通过调用海康SDK打开工业相机(全流程)
  • 论文修改时有哪些需要注意的问题?
  • Leedcode刷题 | Day23_回溯算法02
  • Latex入门之超详细的Latex下载安装教程
  • OpenCV图像处理实战全解析:镜像、缩放、矫正、水印与降噪技术详解
  • 算法设计学习10
  • React编程高级主题:错误处理(Error Handling)