首页 > 其他分享 >rope 介绍

rope 介绍

时间:2022-11-21 07:44:13浏览次数:38  
标签:下标 string int pos 介绍 rope len

STL rope

rope的时间复杂度

查询复杂度是P(N½),插入复杂度是P(N½),空间复杂度是O(N)。

rope初始用法

初始的rope存放的类型是string。

  1. insert(int pos,string &s,int n) 把字符串s中的前n位插入rope下标pos处。
  2. append(string &s,int pos,int n)把字符串s中从下标pos开始的n个字符连接到rope的结尾
  3. substr(int pos,int len)提取rope的从下标pos开始的len个字符
  4. erase(int pos,int num)从rope的下标pos开始删除num个字符
  5. copy(int pos,int len,string &s)从rope的下标pos开始的len个字符用字符串s代替,如果pos后的位数不够就补足
  6. replace(int pos,string &x)从rope的下标pos开始替换成字符串x,x的长度为从pos开始的位数,如果pos后的位数不够就补足。所以这个不是少了一个参数的copy吗?

rope的常用用法

rope存放的类型大多是int.

  1. insert(int pos,int *s,int n) 把s中的前n位插入rope下标pos处。
  2. append(int *s,int pos,int n)把字符串s中从下标pos开始的n个字符连接到rope的结尾
  3. substr(int pos,int len)提取rope的从下标pos开始的len个数
  4. erase(int pos,int num)从rope的下标pos开始删除num个数
  5. copy(int pos,int len,int *s)从rope的下标pos开始的len个数用s代替,如果pos后的位数不够就补足
  6. replace(int pos,int *x)从rope的下标pos开始替换成字符串x,x的长度为从pos开始的位数,如果pos后的位数不够就补足。所以这个不是少了一个参数的copy吗?

当然,它有size()

注意事项

使用时要加#include<ext/rope>

using namespace __gnu_cxx;

例题

给道例题

#include <ext/rope>
#include<bits/stdc++.h>
using namespace std;
using namespace __gnu_cxx;
rope<int> S;
void solve() {
    int n, q;
    cin >> n >> q;
    S.clear();
    for (int i = 1; i <= n; i++) {
        int t;
        cin >> t;
        S.push_back(t);
    }
    int ans = 0;
    while (q--) {
        int op, l, r, x;
        cin >> op;
        if (op == 1) {
            cin >> l >> r;
            S = S.substr(0, r) + S.substr(l - 1, n - r);
        } else {
            cin >> x;
            cout << S[x - 1] << endl;
        }
    }
}
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    solve();
    return 0;
}

标签:下标,string,int,pos,介绍,rope,len
From: https://www.cnblogs.com/zychh/p/16910243.html

相关文章

  • Flink-简单介绍
    1,Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。并且Flink提供了数据分布、容错机制以及资源管理等核心功能。Flink提供了诸多高抽象层的AP......
  • NET7+c#11 2022.11.8日发布,新功能介绍
    c#11新功能原始字符串泛型特性net7新功能:use+add+required速率限制中间件:令牌桶固定窗口:2/s并发限制器用户限流的限制器:爬虫.NETMinimalAPI:没有控制器没有filte......
  • stl: rope(块状链表)
    今天比赛中看到的一个挺简单的东西,除了常数大,别的都挺好的#include<ext/rope>//头文件usingnamespace__gnu_cxx;//注意名称空间rope<int>rp;intmain(){......
  • C语言的介绍
    C语言的介绍1.1什么是计算机程序一组计算机能识别和执行的指令集。每一条指定可以让计算机执行特定的操作。计算机会自动执行各条指令,有条不紊的进行工作1.2什么是计......
  • [Typescript] Decorator - PropertyDecorator, ClassDecorator, MethodDecorator
    MethodDecorator@Log(level):Consolelogmessage@Pref:MesuretimefunctionLog(level:LoggingLevel):MethodDecorator{return(target:any,prop......
  • Mysql介绍
    1.Mysql介绍   •   MySQL是一款开源的关系型数据库管理系统,由瑞典MySQLAB公司1995年研发   •   2008年被Sun公司收购,2009年Sun公司被Oracle公司收......
  • 一.docker介绍(1)
    一、docker介绍容器是一种基础工具,指任何可以用于容纳其他物品的工具。而docker是一个开源的应用容器引擎。docker公司位于旧金山,原名叫dotcloud,底层使用了Linux容......
  • 2.2 电子秤模拟——背景介绍及需求分析
    电子秤需求分析显示屏按键(不同功能,不同水果)称量模块(测量并记录质量)存储模块(存储水果价格)计算模块(加法、乘法)任务分析总价=水果1质量价格1+水果2质量价格2+水果3质......
  • 第一章:第1章 CRM核心业务介绍--概述,crm架构,公司组织结构,软件开发的生命周期,crm项目的
    第一章:第1章CRM核心业务介绍1.什么是crm项目:1,CRM(CustomerRelationshipManagement)客户关系管理是管理企业与客户之间关系的新型管理机制。终极目标是吸引新客户、......
  • 补档--【THM】HTTP in detail(HTTP协议介绍)-学习
    本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/httpindetail通过学习相关知识点:了解如何使用HTTP协议向Web服务器请求内容。什么是HTTP(S)?什么是H......