首页 > 编程语言 >【蓝桥·算法双周赛 第 9 场 小白入门赛】字符迁移【算法赛】题解(字符串+模运算+差分)

【蓝桥·算法双周赛 第 9 场 小白入门赛】字符迁移【算法赛】题解(字符串+模运算+差分)

时间:2024-04-09 09:59:20浏览次数:17  
标签:26 int 题解 双周 算法 差分 数组 字符串 diff

思路

差分数组是一种特殊的数组,它的第 i i i 个数定义为原数组的第 i i i 个元素和第 i − 1 i-1 i−1 个元素的差值。差分数组的主要用途是高效地处理区间增减操作。

首先从输入中读取字符串长度 n 和操作次数 q,以及字符串 s。然后将字符串 s 中的每个字符转换为对应的 ASCII 值减去 ‘a’ 的值,存储在数组 a 中,这样做的目的是为了方便后续的操作。接下来计算数组 a 中相邻元素的差值,存储在数组 diff 中。

然后进行 q 次操作,每次操作读取三个整数 lrk,将 k 对 26 取模,然后在 diff 数组的 l 位置上加上 k,在 r+1 位置上减去 k。这一步操作利用了差分数组的性质,即修改差分数组的某个范围内的值,相当于原数组中对应范围内的所有元素都加上了同一个值。

在所有操作完成后,通过差分数组 diff 还原数组 a,然后将数组 a 中的每个元素对 26 取模并加上 ‘a’ 的 ASCII 值,转换为对应的字符,存储回字符串 s 中。

最后输出字符串 s


AC代码

#include <algorithm>
#include <cmath>
#include <cstring>
#include <iostream>
#define AUTHOR "HEX9CF"
using namespace std;
using ll = long long;

const int N = 1e6 + 7;
const int INF = 0x3f3f3f3f;

int n, q;
int a[N];
char s[N];
int diff[N];

int main() {
	memset(diff, 0, sizeof(diff));

	scanf("%d %d %s", &n, &q, s + 1);
	for (int i = 1; i <= n; i++) {
		a[i] = (int)(s[i] - 'a');
	}
	for (int i = 1; i <= n; i++) {
		diff[i] = a[i] - a[i - 1];
	}
	while (q--) {
		int l, r, k;
		scanf("%d %d %d", &l, &r, &k);
		k %= 26;
		diff[l] += k;
		diff[r + 1] -= k;
	}
	for (int i = 1; i <= n; i++) {
		int t = a[i] = diff[i] + a[i - 1];
		t %= 26;
		s[i] = (char)(t + 'a');
	}
	printf("%s", s + 1);
	return 0;
}

标签:26,int,题解,双周,算法,差分,数组,字符串,diff
From: https://blog.csdn.net/qq_34988204/article/details/137438711

相关文章

  • 【蓝桥·算法双周赛 第 4 场 小白入门赛】自助餐【算法赛】题解(分支+字符串)
    思路首先定义一个整型变量n和一个长整型变量ans,其中n用于存放输入的字符串个数,ans则用于累计所有字符串对应的价格。在接收到n之后,进入一个循环,在循环中,每次接收一个字符串s,并根据s的首字母判断该字符串对应的餐盘种类,并将其价格累加到ans中。具体来说,如果......
  • 基于融合语义信息改进的内容推荐算法。Improved content recommendation algorithm in
    引言路漫漫其修远兮,吾将上下而求索。每天一篇论文,做更好的自己。本文读的这篇论文为发表于2023年5月28日的一篇名为《基于融合语义信息改进的内容推荐算法》(基于融合语义信息改进的内容推荐算法)的文章,文章主要介绍了基于内容的推荐技术在电子商务和教育领域的广泛应用,以及传统基......
  • 探秘KMP算法:解密字符串匹配的黑科技
    KMP算法在正式进入KMP算法之前,不得不先引经据典一番,因为直接去理解KMP,你可能会很痛苦(别问,问就是我也痛苦过)。所以做好前面的预热工作非常非常重要,为了搞明白KMP,在没见到KMP算法的完整代码之前,请耐心的将前面的东西看完。一些相关的概念学习KMP算法,得明白它主要得作用......
  • (文章复现)基于改进秃鹰算法的微电网群经济优化调度研究
    参考文献:[1]周辉,张玉,肖烈禧,等.基于改进秃鹰算法的微电网群经济优化调度研究[J].太阳能学报,2024,45(02):328-335.1.基本原理        微电网群由3个独立的微电网(microgrid,MG)组成,各微电网内部包含光伏(photovoltaic,PV)、风力发电机(windturbine,WT)、电动......
  • Day5.一刷数据结构算法(C语言版) 242有效的字母异位词; 349两个数组的交集; 202快乐数; 1
        现在我们开始学习哈希表.        经过本次学习我认识到c++的便利,但是我使用的是c,那些功能c又用不了,导致代码长度一下子拉长了...        一刷的时候我还是先用c吧,等二刷的时候试试c++.        进入正题:        什么时候......
  • 生成树算法
    一、Prim算法概论适合稠密图,不进行堆优化的时间复杂度是\(O(n^2)\),进行堆优化则是\(O(mlogn)\)每次将离连通部分的最近的点和点对应的边加入的连通部分,连通部分逐渐扩大,最后将整个图连通起来,并且边长之和最小,基于一种贪心的策略。证明的引理对于任意切割(S,V-S),其中S是生......
  • newstart 部分题解和pwn相关的学习
    做newstart的pwnpieee题的pie的学习首先:对于pieee这道题很简单的栈溢出,除了NX其他的保护都开了,然后呢在左边也发现了后门函数相对偏移为0x1264(对于这里我们只用关心后三位,因为pie不会随机化地址的低12位,通俗点说就是我们十六进制地址的后三位)而一般而言后三位的地址能够确定我......
  • 文心一言 VS 讯飞星火 VS chatgpt (232)-- 算法导论17.1 3题
    三、假定我们对一个数据结构执行一个由n个操作组成的操作序列,当i严格为2的幂时第i个操作的代价为i,否则代价为1。使用聚合分析确定每个操作的摊还代价。文心一言:为了进行聚合分析并确定每个操作的摊还代价,我们需要理解操作序列的性质,特别是代价的变化规律。根据题目描......
  • 基于深度学习的海洋鱼类识别算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本MATLAB2022a 3.算法理论概述        深度学习在海洋鱼类识别中常采用卷积神经网络(ConvolutionalNeuralNetworks,CNNs)。CNN由多个层级组成,包括卷积层、池化层、全连接层以及分类层。典型流程如下:   训练......
  • 音频混音算法及应用
     一、音频算法和原理简介在视频会议系统中,音频模块有着很大的重要性,也是评测一个视频会议系统质量的重要方面,相比起视频模块来说,音频质量的好坏涉及到会议内容,有可能会影响到交流的准确性,而质量稍微差一点的视频则是可以承受的.在音频模块中,传统上是使用控制发言权的......