当前位置: 首页> 汽车> 新车 > 甘肃兰州流感最新消息_如何从零开始学室内设计_超级外链吧_软文宣传推广

甘肃兰州流感最新消息_如何从零开始学室内设计_超级外链吧_软文宣传推广

时间:2025/7/10 22:05:56来源:https://blog.csdn.net/zqystca/article/details/147017179 浏览次数: 0次
甘肃兰州流感最新消息_如何从零开始学室内设计_超级外链吧_软文宣传推广

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;
}

关键字:甘肃兰州流感最新消息_如何从零开始学室内设计_超级外链吧_软文宣传推广

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: