【蓝桥第九场小白赛】(字符迁移-差分前缀和详解)

字符迁移

差分数组核心:区间变化前加后减

#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
using LL=long long;int main()
{ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);LL n,q;cin>>n>>q;string s;cin>>s;//int diff[n+1]={0};//差分数组 diff 是一个自动数组,它的大小取决于变量 n。//未初始化的数组元素的值是不确定的,所以在更新差分数组时,可能会出现问题。vector<int> diff(n + 1, 0)while(q--){LL l,r,k;cin>>l>>r>>k;k%=26;diff[l-1]+=k;diff[r]-=k;}for(int i=1;i<=n;i++){diff[i]+=diff[i-1];}for(int i=0;i<n;i++){s[i]='a'+(s[i]-'a'+diff[i])%26;}cout<<s<<endl;return 0;}

假设有一个长度为5的数组 arr,初始值为 [0, 0, 0, 0, 0],现在希望对其中的某个区间进行增加操作。

假设操作是 l = 2, r = 4, k = 3,即将数组中下标为1到下标为3的元素都增加3。

  1. 首先创建一个大小为 n + 1 的差分数组 diff,这里 n 是数组 arr 的长度,所以 diff 的长度为6,初始值为 [0, 0, 0, 0, 0, 0]

  2. 然后,我们执行 diff[l - 1] += kdiff[r] -= k 这两行代码。

    • diff[2 - 1] += 3,即 diff[1] += 3,所以 diff 变为 [0, 3, 0, 0, 0, 0]
    • diff[4] -= 3,所以 diff 变为 [0, 3, 0, 0, -3, 0]

差分数组 diff 记录了每个位置的偏移量变化。

  1. 最后对差分数组进行前缀和操作,得到最终的数组。即对于位置 i,最终的值为 arr[i] = arr[i - 1] + diff[i]。(同diff[i]+)
    • arr[0] = 0 + 0 = 0
    • arr[1] = arr[0] + 3 = 3
    • arr[2] = arr[1] + 0 = 3
    • arr[3] = arr[2] + 0 = 3
    • arr[4] = arr[3] - 3 = 0

最终得到的数组 arr[0, 3, 3, 3, 0]

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

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

相关文章

vmware和ubuntu的问题与解决

1.问题与对策 最近使用vmware安装ubuntu16和ubuntu20&#xff0c;遇到了挺多的问题&#xff0c;如下 ubuntu在用过多次后&#xff0c;重启后登录用户名后会出现花屏的现象。 解决方案如下 在键盘上同时按键&#xff1a;Ctrl Alt F4&#xff0c;进入命令行模式&#xff0c;…

基于深度学习的电动自行车头盔佩戴检测系统

文章目录 1. 文档说明2. 运行环境说明2.1 硬件配置2.2 软件配置2.3 程序依赖库 3. 基本环境配置3.1 软件安装3.1.1 集成开发环境安装与配置3.1.2 数据库安装与配置3.1.3 编程语言安装3.1.4 CUDA和cuDNN安装与配置3.1.5 机器学习库安装 3.2 依赖库安装 4. 运行程序资源下载地 1.…

Binder通信模型

Binder是Android最主要的进程间通信方式&#xff0c;下面简单认识一下它的通信模型&#xff0c;如下图所示 服务管理进程启动时会变成上下文管理者&#xff0c;在驱动层创建一个全局的binder_node对象binder_context_mgr_node记录进程信息&#xff0c;BpServiceManager中BpBind…

HarmonyOS实战开发-如何实现跨应用数据共享实例。

介绍 本示例实现了一个跨应用数据共享实例&#xff0c;分为联系人&#xff08;数据提供方&#xff09;和联系人助手&#xff08;数据使用方&#xff09;两部分&#xff1a;联系人支持联系人数据的增、删、改、查等功能&#xff1b;联系人助手支持同步联系人数据&#xff0c;当…

血细胞检测数据集 | 用于血细胞计数+检测的小规模数据集_已经整理成VOC格式_总共410张图

项目应用场景 面向血细胞检测计数数据集&#xff0c;已经整理成 VOC 格式&#xff0c;可以直接用于目标检测算法的训练&#xff0c;如 YOLO 等目标检测算法的训练。血细胞检测数据集图片质量好&#xff0c;可直接训练出一个血细胞检测模型&#xff0c;或者作为血细胞检测数据集…

AI智能分析盒子在工地的应用,提高工地管理效率和安全性

工地ai智能分析盒子是一种基于人工智能视觉分析技术的人工智能盒子&#xff0c;旨在提升工地作业区域的管理效率和保障作业人员的安全。通过最前沿的AI视觉算法、大数据&#xff0c;能够实时监控工地现场视频流画面&#xff0c;对施工工地人员的工作着装及日常作业行为进行规范…

定时任务的学习(一)用@schedule注解实现的简单案例

springboot实现&#xff1a; /*** &#xff0c;每分钟执行一次*/Scheduled(cron "0 * * * * ?")protected void getSomeThring2 (){System.out.println("每分钟执行一次ScheduleDamo.getSomeThring2");log.info("每分钟执行一次ScheduleDamo.getSo…

RocketMQ笔记(八)SpringBoot整合RocketMQ广播消费消息

目录 一、简介1.1、消费模式 二、消费者2.1、maven依赖2.2、application配置2.3、消费监听 三、生产者3.1、发送消息3.2、运行结果 四、其他 一、简介 在之前的文章中&#xff0c;我们讲过了&#xff0c;同步发送单条消息&#xff0c;异步发送单条消息&#xff0c;发送单向消息…

1.C++编译过程

1.Linux 如何安装 C 编译环境 &#xff08;1&#xff09;安装 gcc 下载&#xff1a;sudo apt install gcc g 安装&#xff1a;gcc/g -v/--version其中 gcc 用于编译 C &#xff0c;g 用于编译 C 版本要 >4.8.5 这样才能使用 C11 的特性 &#xff08;2&#xff09; 使用…

【QT学习】4.对话框学习,浮动窗口,模态对话框,非模态对话框,消息框,文件对话框

1.浮动窗口 代码&#xff1a; //制作核心控件&#xff1a;文本编辑框QTextEdit* pTextEditnew QTextEdit;//制作浮动控件connect(pMenu1,&QMenu::triggered,[](QAction* pAction){qDebug()<<pAction->text()<<endl;if(pAction->text()"浮动控件&quo…

Spring与Web环境的集成

1. ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的&#xff0c;但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) &#xff0c;这样的弊端是配置文件加载多…

Vulnhub:DEVCONTAINER: 1

目录 信息收集 arp nmap nikto whatweb WEB 信息收集 dirmap 文件上传 提权 系统信息收集 横向提权 信息泄露 get root 信息收集 arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:50:56:2f:dd…

YUM仓库和编译安装

目录 一.YUM仓库搭建 1.简介&#xff1a; 2.搭建思路&#xff1a; 3.实验&#xff1a;单机yum的创建 二.编译安装 1.简介 2.安装过程 3.实验&#xff1a;编译安装nginx 一.YUM仓库搭建 1.简介&#xff1a; yum是一个基于RPM包&#xff08;是Red-Hat Package Manager红…

超级agent的端语言模型Octopus v2: On-device language model for super agent

大型语言模型&#xff08;LLMs&#xff09;在函数调用方面展现出卓越的应用潜力&#xff0c;特别是针对Android API的定制应用。与那些需要详尽描述潜在函数参数、有时甚至涉及数万个输入标记的检索增强生成&#xff08;RAG&#xff09;方法相比&#xff0c;Octopus-V2-2B在训练…

计算机网络⑨ —— TCP粘包与拆包

1. 什么是TCP粘包与拆包 TCP作为传输层协议并不了解上层业务数据的具体含义&#xff0c;它会根据TCP缓冲区的实际情况进⾏数据包的划分&#xff0c;所以在业务上认为是⼀个完整的包&#xff0c;可能会被TCP拆分成多个包进⾏发送&#xff0c;也有可能把多个⼩的包封装成⼀个⼤的…

fastlio2 保存每帧的点云和每帧的里程计为单独的文件做后端回环优化和手动回环优化

为了 提供数据做后端回环优化和手动回环优化,需要保存每帧的点云和每帧的里程计为单独的文件,并且需要保存的名字为ros时间戳。 效果很好,比我自己写的手动回环模块好用 // This is an advanced implementation of the algorithm described in the // following paper: /…

ZLMediaKit ubantu 下编译

1、获取代码 #国内用户推荐从同步镜像网站gitee下载 git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit #千万不要忘记执行这句命令 git submodule update --init二、依赖库 Debian系(包括ubuntu&#xff09;系统下安装依赖的方法&#xff1a; #除了…

如何修改电脑用户名user后的名字

更改电脑用户名&#xff08;C:\Users\用户名&#xff09; 直接上步骤 1.WinR打开运行窗口&#xff0c;输入regedit&#xff0c;打开注册表&#xff0c;CtrlF搜索&#xff0c;找到ProfileList,这里会出现几个S-1-5开头的文件。 这里有一处注意的&#xff1a; 图片中的这个位置要…

2024.4.8-day12-CSS 常用样式属性和字体图标

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业2024.4.8-学习笔记盒子阴影文本阴影透明的vertical-align字体使用 作业 &…

2024年网络安全趋势前瞻:从AI攻击到云安全新挑战

随着2024年开展新的序幕&#xff0c;网络安全领域正面临着前所未有的挑战与机遇&#xff0c;一系列引人注目的趋势和预测逐渐浮出水面。 一、AI技术发展引发的安全问题 近年来&#xff0c;我们见证了AI技术的飞速进步&#xff0c;其中ChatGPT等引领潮流的AI服务成为公众瞩目的…