蓝桥杯省赛无忧 编程13 肖恩的投球游戏

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

#include <iostream>
#include <vector>
using namespace std;
int main() {int n, q;cin >> n >> q;vector<int> a(n + 1);vector<int> diff(n + 2, 0);  // 初始化差分数组// 读取初始球数,构建差分数组for (int i = 1; i <= n; ++i) {cin >> a[i];diff[i] += a[i] - (i == 1 ? 0 : a[i-1]);}// 处理每次操作while (q--) {int l, r, c;cin >> l >> r >> c;diff[l] += c;if (r + 1 <= n) diff[r + 1] -= c;}// 根据差分数组还原最终数组for (int i = 1; i <= n; ++i) {diff[i] += diff[i - 1];cout << diff[i] << (i == n ? '\n' : ' ');}return 0;
}

给定一个含有n个元素的数组,其中每个元素代表一个球筐中球的初始数量。接着,程序会接受q次更新操作,每次操作指定一个范围[l, r],以及一个值c,程序需要将这个范围内的每个球筐的球数增加c。最终程序输出在所有操作执行完成后,每个球筐中的球数量。

为了有效地实现这个功能,程序使用了差分数组技术。差分数组的主要优势是能在O(1)的时间复杂度内实现对原始数组某个区间内所有元素的同量增加或减少。

代码分析:

4. int main() {
5.     int n, q;

main函数是程序的入口点,定义了两个整数变量nq,分别代表球筐的数量和操作的次数。

6.     cin >> n >> q;

这行代码从标准输入读取这两个变量的值。

7.     vector<int> a(n + 1);
8.     vector<int> diff(n + 2, 0);

定义了两个整数类型的向量adiffa用于存储每个球筐的初始球数。diff是差分数组,其中每个元素初始化为0,其容量设置为n+2,这样即使对于最后一个球筐进行操作时,也不会越界。

9.     // 读取初始球数,构建差分数组
10.    for (int i = 1; i <= n; ++i) {
11.        cin >> a[i];
12.        diff[i] += a[i] - (i == 1 ? 0 : a[i-1]);
13.    }

这个循环读取初始的球数,并初始化差分数组diff。对于差分数组而言,第一个元素就是原数组的第一个元素的值,后续元素diff[i]代表a[i]a[i-1]的差值。

14.    // 处理每次操作
15.    while (q--) {
16.        int l, r, c;
17.        cin >> l >> r >> c;
18.        diff[l] += c;
19.        if (r + 1 <= n) diff[r + 1] -= c;
20.    }

这个循环处理每次更新操作。对于每次操作,我们只更新差分数组的l和r+1位置。这样做的效果是,在后续计算前缀和时,[l, r]区间内的每个元素都会被正确地增加c

21.    // 根据差分数组还原最终数组
22.    for (int i = 1; i <= n; ++i) {
23.        diff[i] += diff[i - 1];
24.        cout << diff[i] << (i == n ? '\n' : ' ');
25.    }

这个循环基于差分数组计算最终的球的数量(即还原数组a),并将其打印出来。每个元素的值都是它自己加上前一个元素的值(这实际上是计算前缀和的过程)。

这段代码利用差分数组处理区间更新操作,无需对每个区间的元素逐一进行操作,从而将时间复杂度从O(q*n)降低到O(n+q)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/433201.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 击穿、穿透、雪崩产生原因解决思路

大家都知道&#xff0c;计算机的瓶颈之一就是IO&#xff0c;为了解决内存与磁盘速度不匹配的问题&#xff0c;产生了缓存&#xff0c;将一些热点数据放在内存中&#xff0c;随用随取&#xff0c;降低连接到数据库的请求链接,避免数据库挂掉。需要注意的是&#xff0c;无论是击穿…

IDEA 安装阿里Java编码规范插件

1.File>Settings 2.安装之后重启 开发过程中如果有不符合规范的地方&#xff0c;会自动出现提示

硬件知识(1) 手机的长焦镜头

#灵感# 手机总是配备好几个镜头&#xff0c;研究一下 目录 手机常配备的摄像头&#xff0c;及效果举例 长焦的焦距 焦距的定义和示图&#xff1a; IPC的焦距和适用场景&#xff1a; 手机常配备的摄像头&#xff0c;及效果举例 以下是小米某个手机的摄像头介绍&#xff1a…

SpringBoot中集成XXL-JOB分布式任务调度平台,轻量级、低侵入实现定时任务

场景 XXL-JOB 分布式任务调度平台XXL-JOB XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 特性&#xff1a; 1、简单&#xff1a;支持通过Web页面对任务进行CRUD操作&#xff0c;操作简单&#xff0c;一分钟上手&…

Redis 可以代替 MySQL 作为数据库吗?

文章目录 前言1.连接到Redis服务器&#xff1a;2.存储和获取数据&#xff1a;3.列表操作&#xff1a;4.有序集合操作&#xff1a;5.键过期和删除&#xff1a;a.发布和订阅消息&#xff1a;b.实现分布式锁&#xff1a;c.使用Redis实现缓存功能&#xff1a; 前言 当使用Redis作为…

GEM5 Garnet Standalone 命令行与stats.txt结果分析

简介 展示了不同的命令行与结果,作为初步的了解. 命令行 sim-cycles要大,不然没结果 ./build/NULL/gem5.debug configs/example/garnet_synth_traffic.py –num-cpus16 –num-dirs16 –networkgarnet –topologyMesh_XY –mesh-rows4 –sim-cycles1000000 --inj-vnet…

Kafka-服务端-PartitionStateMachine

PartitionStateMachine是Controller Leader用于维护分区状态的状态机。分区的状态是通过PartitionState接口定义的&#xff0c;它有四个子类分别代表了分区四种可能的状态&#xff0c;如表所示。 分区各个PartitionState之间的转换如图所示。 下面分析各个状态之间转换时&#…

使用代码取大量2*2像素图片各通道均值,存于Excel文件中。

任务是取下图RGB各个通道的均值及标签&#xff08;R, G&#xff0c;B&#xff0c;Label&#xff09;,其中标签由图片存放的文件夹标识。由于2*2像素图片较多&#xff0c;所以将结果放置于Excel表格中&#xff0c;之后使用SVM对他们进行分类。 from PIL import Image import os …

深入浅出hdfs-hadoop基本介绍

一、Hadoop基本介绍 hadoop最开始是起源于Apache Nutch项目&#xff0c;这个是由Doug Cutting开发的开源网络搜索引擎&#xff0c;这个项目刚开始的目标是为了更好的做搜索引擎&#xff0c;后来Google 发表了三篇未来持续影响大数据领域的三架马车论文&#xff1a; Google Fil…

Unity应用在车机上启动有概率黑屏的解决方案

问题描述 最近将游戏适配到车机上&#xff08;Android系统&#xff09;&#xff0c;碰到了一个严重bug&#xff0c;启动的时候有概率会遇到黑屏&#xff0c;表现就是全黑&#xff0c;无法进入Unity的场景。 经过查看LogCat日志&#xff0c;也没有任何报错&#xff0c;也没有任…

qt 坦克大战游戏 GUI绘制

关于本章节中使用的图形绘制类&#xff0c;如QGraphicsView、QGraphicsScene等的详细使用说明请参见我的另一篇文章&#xff1a; 《图形绘制QGraphicsView、QGraphicsScene、QGraphicsItem、Qt GUI-CSDN博客》 本文将模仿坦克大战游戏&#xff0c;目前只绘制出一辆坦克&#…

企业职能部门员工忙闲不均,如何调动积极性?

案例企业背景&#xff1a; 某企业隶属于中国航天科技集团公司&#xff0c;致力于光纤陀螺系统、微机电惯性系统、光纤传感系统等高新技术产品的研发。公司具有雄厚的新型惯导和光电传感技术基础&#xff0c;多年来开创了我国光纤陀螺技术在武器、卫星和载人飞船等多个任务上的…