您的位置:首页 > 健康 > 美食 > 重庆宣传网站怎么做_湖南政务服务网_简述搜索引擎优化的方法_今日头条新闻最新

重庆宣传网站怎么做_湖南政务服务网_简述搜索引擎优化的方法_今日头条新闻最新

2025/4/23 20:29:46 来源:https://blog.csdn.net/zqystca/article/details/147017179  浏览:    关键词:重庆宣传网站怎么做_湖南政务服务网_简述搜索引擎优化的方法_今日头条新闻最新
重庆宣传网站怎么做_湖南政务服务网_简述搜索引擎优化的方法_今日头条新闻最新

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