[Non] 字符串问题

news/2026/1/16 21:58:31/文章来源:https://www.cnblogs.com/To-Carpe-Diem/p/19494186

字符串问题

大意

插入字符,查询字符。
初始串 \(s\), \(|s| \le 10^6\)

思路

可以用平衡树,但是我选择更为强势的 STL 中的 rope。

头文件:#include<ext/rope>

crope r1;           // 存储 char 的 rope
wrope r2;           // 存储 wchar_t 的 rope
rope<long long> r3; // 也可以存储其他基本类型

rope 的大部分操作复杂度均为 \(O(\log n)\),底层基于可持久化平衡树实现。

函数名 功能描述 示例用法
push_back(x) 在末尾添加单个字符 r.push_back('a');
append(s) 在末尾追加字符串/rope r.append("abc");
insert(pos, s) pos 位置插入字符串/rope r.insert(2, "xyz");
erase(pos, n) pos 开始删除 n 个字符 r.erase(1, 10);
replace(pos, n, s) posn 个字符替换为 s r.replace(1, 2, "ok");
substr(pos, n) 提取从 pos 开始的 n 个字符 crope sub = r.substr(2, 3);
at(i)[i] 访问下标为 i 的字符 char c = r[0];
size() 返回当前长度 int len = r.size();

rope 最强大的特性在于它支持 \(O(1)\) 的对象拷贝,这使得它能以极低的时间和空间成本维护历史版本。

当你将一个 rope 赋值给另一个时,底层并不拷贝树结构,而是增加引用计数。只有在其中一个对象发生修改时,才会局部复制受影响的节点。

crope r1 = "v1_data"; 
crope r2 = r1;         // O(1) 拷贝,此时 r1 和 r2 共享底层节点
r2.insert(0, "new_");  // 修改 r2,r1 保持不变(自动实现可持久化)

如果题目要求查询“第 k 次操作后的状态”,可以直接开一个 rope 数组记录快照:

crope history[MAX_VERSION];int main() {history[0] = "initial_state"; // 初始状态for(int i = 1;i <= m;++ i){history[i] = history[i - 1]; // O(1) 继承上一个版本// 在当前版本上进行操作int opt, pos; char c;cin >> opt >> pos >> c;if(opt == 1){// 修改当前版本,不会影响 history[i - 1]history[i].insert(pos, c);}}
}

记得加:using namespace __gnu_cxx;

代码

#include<iostream>
#include<ext/rope>
using namespace std;
using namespace __gnu_cxx;string s;
int m;
crope r;int main(){cin >> s;cin >> m;r.append(s.c_str());while(m --){char op;cin >> op;if(op == 'I'){char c; int p; cin >> c >> p;if(p > r.size()){r.append(c);}else{r.insert(p - 1, crope(1, c));}}else{int x; cin >> x;cout << r[x - 1] << '\n';}}return 0;
}

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

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

相关文章

谷歌Veo 3.1更新:更一致性、更具创造力和控制力

刚刚&#xff0c;谷歌Veo 3.1发布更新。通过素材转视频功能&#xff0c;实现了角色身份、背景与物体在动态场景中的高度一致性&#xff0c;并首次支持原生竖屏生成与4K超分画质&#xff0c;彻底打通了从静态图像到专业级动态叙事的创作链路。三大更新都是当前市场需求最大的领域…

评正高写书10万字什么价格?

评正高写书10万字什么价格&#xff1f; 评正高专著要求多少字&#xff1f; 下面淘淘论文来回答作者的这个疑问。一、评正高专著要求同样是评正高职称&#xff0c;要求有一定差异。一般评正高职称&#xff0c;对于专著的要求分为这几种情况&#xff1a;&#x1f539;独著或者合著…

Day15对象的方法与遍历对象

方法:<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"…

SCI分区是怎么划分的?

SCI分区是怎么划分的&#xff1f;SCI期刊的一区、二区、三区、四区是怎么分区的&#xff1f;很多作者知道SCI有几个分区&#xff0c;但是不知道期刊的分区标准。下面淘淘论文来回答作者的这个疑问。一、SCI期刊分区划分的原因SCI期刊数量有9000多种&#xff0c;而SSCI期刊有300…

深圳ACFlow智能营销系统:2026年中小企业AI驱动营销新范式

## 智能营销系统:2026年企业增长的数字化引擎在数字经济浪潮下,**智能营销系统**已成为企业提升市场竞争力、实现精准获客的核心工具。根据艾瑞咨询《2026年中国营销科技(MarTech)行业研究报告》显示,中国营销科技…

工业级文本转SQL新思路:成本暴降、超3000列超大数据库依然稳健

像一位经验丰富的数据库工程师那样去思考和探索&#xff0c;才是解决工业级文本转SQL&#xff08;Text-to-SQL&#xff09;难题的终极答案。华中科技大学与复旦大学联合发布了AutoLink框架&#xff0c;通过引入自主智能体&#xff0c;模拟人类工程师“探索-验证-迭代”的工作流…

ACP:2.从一个 .NET 实战开始,看 Agent 带来的真实差异

ACP:2.从一个 .NET 实战开始,看 Agent 带来的真实差异 在上一篇文章中,我们聊了 ACP 想解决的核心问题:当 AI 工具越来越多,Agent、Prompt、MCP、Skills 已经变成一种需要被管理的工程能力。这一篇,我们不再讲理…

C++跨平台开发挑战的技术

跨平台开发概述C作为跨平台语言的优劣势分析常见跨平台场景&#xff08;Windows/macOS/Linux/嵌入式等&#xff09;跨平台开发的核心目标&#xff1a;代码复用与一致性体验技术挑战与解决方案编译器与标准兼容性问题不同平台编译器&#xff08;GCC/Clang/MSVC&#xff09;对C标…

万卡的部署架构

目录一、理解题意二、回答思路(Step by Step)1️⃣ 量化和模型副本2️⃣ 模型并行策略3️⃣ 推理请求调度4️⃣ 弹性伸缩和高可用5️⃣ 核心要点总结(面试回答模板) 好的,这类面试问题,本质是在考察你对 大模型生…

IDM插件开发创意赛

引言IDM&#xff08;Internet Download Manager&#xff09;插件开发的意义与价值创意赛的背景与目标参赛者的技术门槛与预期成果IDM插件开发基础www.yunshengzx.comIDM插件架构与核心功能开发环境配置&#xff08;工具链、SDK、文档资源&#xff09;插件与IDM的交互机制&#…

建模智能体,AI 时代的数据治理新范式

从制度治理到生成式治理的根本转变 1 数据治理是上一代信息化的体系性问题 过去十多年&#xff0c;企业在数据治理上的投入并不算少。沿着数据治理方法论&#xff0c;我们有主数据、元数据、数据标准、数据质量、数据资产目录、数据开发与分析、安全分级分类……几乎每一个治理…

Claude Code 在 Windows 下的 nul 文件问题解决方案

前言 如果你在 Windows 上使用 Claude Code,可能会遇到一个奇怪的现象:项目目录里莫名其妙出现一个名为 nul 的文件,而且在资源管理器里怎么都删不掉,就像"幽灵文件"一样。 今天分享一篇来自 LINUX DO 论坛用户 tzcbz 的技术文章,深入分析了这个问题的根本原因,并提…

DCDN和CDN科普:动态内容加速的秘密武器

前言 在早期的互联网时代&#xff0c;网站内容大多是图片、CSS样式文件、JavaScript脚本等静态资源。CDN&#xff08;内容分发网络&#xff09;正是为了解决这类内容的分发效率问题而诞生的。 然而&#xff0c;随着互联网的快速发展&#xff0c;我们从2G时代走到3G、4G&#xf…

探索AI原生应用领域,AI代理引领新潮流

探索AI原生应用领域,AI代理引领新潮流 关键词:AI原生应用、AI代理、大语言模型、自主决策、人机协作、智能自动化、未来趋势 摘要:本文深入探讨AI原生应用领域的最新发展,重点分析AI代理技术的核心原理和应用场景。我们将从基础概念出发,逐步解析AI代理如何通过大语言模型…

苹果手机照片怎么导入电脑?苹果手机传输照片就用这5招

大家的苹果手机中都存储着许多照片吧&#xff0c;它们通常很占内存&#xff0c;无论是为了腾空间&#xff0c;还是安全备份&#xff0c;将照片导入电脑都是一个明智的选择。那&#xff0c;苹果手机照片怎么导入电脑&#xff1f;听起来简单是吧&#xff1f;但实际操作中&#xf…

LLM伦理推理让临床决策更公平

&#x1f4dd; 博客主页&#xff1a;Jax的CSDN主页 LLM伦理推理&#xff1a;推动临床决策公平性的智能引擎目录LLM伦理推理&#xff1a;推动临床决策公平性的智能引擎 引言&#xff1a;医疗公平性缺失的现实困境 一、伦理推理&#xff1a;临床决策公平性的技术破局点 &#xff…

从ChatBI到Agentic BI:衡石如何构建“自主决策与执行”的数据智能体

传统商业智能系统等待人类提出问题&#xff0c;新一代ChatBI系统接受人类用自然语言提问&#xff0c;而真正的Agentic BI系统则能够自主发现关键问题、分析问题并启动解决流程。这正是衡石科技正在构建的未来。01 进化之路&#xff0c;从被动应答到主动感知的必然转变数据分析领…

基于深度学习的肺炎检测系统(YOLOv8+YOLO数据集+UI界面+Python项目+模型)

一、项目介绍 摘要 本项目基于YOLOv8深度学习框架&#xff0c;开发了一套高效、准确的肺炎智能检测系统&#xff0c;用于医学影像&#xff08;如X光或CT扫描&#xff09;中的肺炎识别。系统针对单类别&#xff08;Pneumonia肺炎&#xff09;进行优化&#xff0c;采用包含3,77…

2025年华南理工大学计算机考研复试机试真题(解题思路 + AC 代码)

2025年华南理工大学计算机考研复试机试真题 2025年华南理工大学计算机考研复试上机真题 历年华南理工大学计算机考研复试上机真题 历年华南理工大学计算机考研复试机试真题 更多学校完整题目开源地址&#xff1a;https://gitcode.com/u014339447/pgcode 百度一下pgcode 即…