poj 2887 块状数组/线段树

Debian安装与基本使用:详细指南及常见问题解析 示例: 使用parted创建分区(假设设备名为sda)bash。 阅读详情

Big String
Time Limit: 1000MS Memory Limit: 131072K
Total Submissions: 5952 Accepted: 1405

Description

You are given a string and supposed to do some string manipulations.

Input

The first line of the input contains the initial string. You can assume that it is non-empty and its length does not exceed 1,000,000.

The second line contains the number of manipulation commands N (0 < N ≤ 2,000). The following N lines describe a command each. The commands are in one of the two formats below:

  1. I ch p: Insert a character ch before the p-th character of the current string. If p is larger than the length of the string, the character is appended to the end of the string.
  2. Q p: Query the p-th character of the current string. The input ensures that the p-th character exists.

All characters in the input are digits or lowercase letters of the English alphabet.

Output

For each Q command output one line containing only the single character queried.

Sample Input

ab
7
Q 1
I c 2
I d 4
I e 2
Q 5
I f 1
Q 3

Sample Output

a
d
e

Source

字符串总长度不超过10^6,插入操作不超过2000次。可以用块状数组存储字符串,比如10^6分成1000行存,每行1000个,并用len[]数组记录每行的字符串长度。插入第k个就找到第k个字符应该属于哪一行,直接插入,操作次数也不超过改行字符串长度也就是几千。

块状数组思想是平方分割法,将长度为n的数组分sqrt(n)块,每个长度为n/sqrt(n)=sqrt(n),对每个区间进行操作只需要O(sqrt(n))的复杂度。

这题是插入和查询第k个点,一般还可以用线段树离线输出结果。先把所有的查询和插入都进来,倒叙模拟插入,用线段树更新和统计区间和。


#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>

using namespace std;

#define maxn 1001

char s[maxn*maxn];
char a[maxn][maxn*3]; //插入最多2000次,每行最多3000个
int len[maxn];  //记录每一行字符个数
const int b = 1000; //默认分成最多1000行
int row; //共几行

char query(int k) //查询第k个
{
    int cnt = 0;
    for(int i = 0; i < row; i++){
        if(cnt+len[i]>= k){
            return a[i][k-cnt-1];
        }
        cnt+=len[i];
    }
}

void add(char ch, int k) //插入到第k个
{
    int cnt = 0;
    int r;
    for(int i = 0; i < row; i++){
        if(cnt+len[i] >= k){
            r = i;
            break;
        }
        if(i == row-1) {r = row-1; break;}
        cnt+=len[i];
    }

    int pos = k-cnt-1;
    if(pos >= len[r]) pos = len[r];
    for(int i = len[r]; i >= pos+1; i--)
        a[r][i] = a[r][i-1];
    a[r][pos] = ch;
    len[r]++;

}

int main()
{
    while(scanf("%s", s)==1){
             memset(len, 0, sizeof(len));
            int slen = strlen(s);
            int perl = (slen+b-1)/b; //每行保存的字符个数

            row = (slen-1)/perl+1; //共多少行
            for(int i = 0; i < row; i++) len[i] = perl;
            for(int i = 0; i < slen; i++)
                a[i/perl][i%perl] = s[i];
            len[row-1] = (slen-1)%perl+1;

            int n;
            scanf("%d", &n);
            while(n--){
                char op[3];
                int k;

                scanf("%s", op);
                if(op[0] == 'Q'){
                    scanf("%d", &k);
                    printf("%c\n", query(k));
                }
                else{
                    scanf("%s %d", op, &k);
                    add(op[0], k);
                }
            }
    }
    return 0;
}



(五)Debian系统--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目> Debian GNU/Linux 是 Linux 操作系统的一个特定发行版,以及在其上运行的众多软件包。Debian项目由 Ian Murdock 于 1993 年发起,是在Linux发行版的概念还很新的时候获得广泛认可的首批自由软件项目之一。Debian 这个名字——发音为 deb-EE-uhn——是一个合成词,它混合了创建者的名字 Ian 和他妻子 Debra 的名字。 阅读详情

相关推荐

Debian操作系统常用命令

本文详细介绍了Debian操作系统中常用的命令,涵盖了文件和目录操作、文本处理、系统管理、软件包管理、网络管理等多个方面。掌握这些命令,将有助于读者更好地使用和管理Debian系统,提高工作效率。在实际工作中,读者可以根据需要灵活运用这些命令,解决各种问题和任务。

u013558123的博客 5452

linux debian教程,Debian安装全攻略

工作需要,重新安装Debian6.06 ,由于Debian 是比较纯洁的系统(相比Ubuntu,呵呵),所以绝大多数都需要手动修改!下面详述新装Debian系统需要做的工作:一、修改源# su 进入root模式# vim /etc/apt/sources.list 打开源文件下面是我使用的源:deb http://mirrors.163.com/debian squeeze main cont...

weixin_28930803的博客 2万+

瑞芯微rk3568移植openbmc(一)----关于ob移植的优缺点

基于rock3a的单板,CPU为瑞芯微rk3568的环境,移植了openbmc

feixiang3839的专栏 5537

CentOS、Ubuntu、Debian三个linux比较异同

Linux有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。 商业版本以Redhat为代表,开源社区版本则以debian为代表。这些版本各有不同的特点,在不同的应用领域发挥着不同的作用,不能一概而论。而绝大多数VPS上只提供开源社区维护的发行版本。下面就这些不同的Linux发行版进行简单的分析。 Ubuntu Ubuntu近

鲵之风采的专栏 3万+

STM32使用LORA模块通信

目录 一、模块使用方法 1、模块简介 2、硬件及功能 3、传输方式 二、模块上手 1、连接 2、编写代码 usart3.h usart3.c lora.h lora.c 一、模块使用方法 本文以正点原子ATK-LORA-01模块为例进行介绍。 1、模块简介 ATK-LORA-01-V3.0(V3.0是版本号,下面均以ATK-LORA-01表示该产品)是ALIENTEK推出的一款体积小、微功率、低功耗、高性能远距离LORA无线串口模块。模块设计是采用高效的IS...

qq_54706971的博客 3万+

Vue集成飞书前端JSSDK

文章目录前言<1>飞书前端JSSDK<2>使用步骤1.将JSSDK引入到VUE2.读入数据总结 前言 公司需要使用飞书软件,所以转战飞书开发,也是对新知识的探索与研究,飞书SDK也一直都在更新,路虽远,行必达。 <1>飞书前端JSSDK 1、官网地址:https://open.feishu.cn/document/uYjL24iN/uITO4IjLykDOy4iM5gjM 2、当前使用的飞书前端JSSDk的版本:1.5.4 <!-- 在html文档中 --&gt

A 1万+

Debian是什么?有哪些常用命令

Debian是什么?与CentOS的区别,它们的优缺点是什么?有哪些不同的运用场景?

软件行业技术文化交流。 6924

5G 网络的移动性管理上下文对比介绍

5G 网络的移动性管理上下文对比介绍 4G/5G MM移动性管理机制对比 5G引入了新移动性管理状态,通过mobility pattern(移动方式)实现按需的移动性管理等。 MM的相关状态分为一下几种: RM状态(用户注册管理 注册态/非注册态)和CM状态(用户连接态/空闲态)独立;RM状态标识UE是否注册到网络,CM状态标识UE和核心网的信令连接是否存在。 RAN侧引入RRC-inactive state:UE(用户端)对于CN(核心网)而言处于连接态,对RAN(接入网)而言处于Ld..

m0_59032675的博客 4819

debian安装和基本使用

本文旨在全面介绍Debian系统的安装与基本使用方法,帮助读者了解并熟悉这一强大的Linux发行版。首先,文章概述了Debian系统的特点及其与其他Linux发行版的区别,强调了Debian的稳定性和广泛的软件支持。 在安装部分,文章详细描述了Debian的安装过程。接下来,文章介绍了Debian的基本使用方法,包括登录与注销、桌面环境介绍、文件管理、软件包管理以及系统设置与配置等方面。

博客虽小,世界尽在其中 1万+

告别连接难题:Windows 11下Multisim主数据库稳定运行终极配置指南

本文详细解析了Windows 11下Multisim 14.0主数据库连接失败的三大根源,并提供了四步终极解决方案,包括系统环境优化、软件权限配置、注册表修复和网络验证绕过技巧。通过实测数据对比,本方案显著提升了启动速度和稳定性,解决了电子仿真中的常见连接问题。

weixin_33738555的博客 432

二、基于C语言的JPEG解码代码详解

// JPEG解码 // 输入JPEG后输出Bitmap #include <stdio.h> #include <stdlib.h> #pragma warning(disable : 4996) unsigned int BuffIndex; // JPEG数据的位置 unsigned int BuffSize; // JPEG数据的大小 unsigned int BuffX; // 图像的横向尺寸 unsigned int BuffY; //

m0_37633745的博客 4455

初识块状数组/块状链表(讲解+ 例题)

As we all known.数组定位的复杂度为O(1),插入删除的复杂度是O(n) 链表定位的复杂度是O(n),插入删除的复杂度是O(1) 块状数组结合了链表和数组的优点,使得所有操作的复杂度均为O(√n) 代码:#include #include #include #include #include #include #define ll long long using n

AI_xue 6093

【Docker】搭建一个媒体服务器插件后端API服务 - MetaTube

本教程基于群晖的NAS设备DS423+的docker功能进行搭建,DSM版为 7.2.1-69057 Update 5。MetaTube是一个媒体服务器插件,主要用于Emby和Jellyfin媒体服务器。它的主要功能是从互联网上抓取内容并响应 JSON 数据,然后通过预安装的 MetaTube 插件请求服务器并下载相应的元数据,以与 Jellyfin/Emby 服务器配合使用。使用 MetaTube 的步骤大致如下:部署后端:首先,需要部署一个名为​ 的后端 API 服务器来抓取内容。

小小笔记大大用处 1万+

poj 2887 块状数组

Big String Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 7116   Accepted: 1701 Description You are given a string and supposed to do some string manipul

菜鸟的进阶之路 466

GPU硬件架构与微架构深度解析34-GPU安全架构深度解析

现代GPU不仅是图形处理器,更是高性能计算平台,安全架构设计至关重要。内存加密- 保护数据在传输和存储时的安全安全启动- 确保固件和软件的完整性隔离机制- 防止不同应用间的数据泄露密钥管理- 安全存储和处理加密密钥。

2301_79143213的博客 99

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

深入了解 Debian:强大功能的秘密与常用命令的魔法

在工作中,掌握一些 Debian 常用命令可是至关重要的哦~最近,我手头的项目需要搭建一批 Debian 系统做服务器,所以呢,我就抽空整理了一套 Debian 常用命令,希望能帮到大家!这些命令可以帮你轻松管理系统、安装软件、配置网络等。在使用这些命令之前,建议你先了解一下它们的基本语法和参数哦!希望这篇文章能帮你更好地掌握 Debian 常用命令,提高工作效率!

qq_57930963的博客 5498

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Debian系统详解

◦ 稳定版:如 Bullseye(11)(2021 年)、Bookworm(12)(2023 年)、Trixie(13)(预计 2025 年)。◦ x86-64(amd64)、x86(i386)、ARM64(aarch64)、ARMhf(armhf,用于树莓派等)。• 兼容性:可运行在物理机、虚拟机(VMware/VirtualBox)、容器(Docker)及云平台(AWS/GCP)。稳定版(Stable) 经过严格测试,更新周期长(约 2-3 年),软件版本保守但兼容性极佳。服务器、生产环境、桌面。

bulita great world 3894

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

debian11 debian12 安装图解 服务器+桌面

debian11、12图解安装,详细,服务器和桌面都有

ziqibit的博客 3万+

【学习整理】Debian12 系统安装

若你想要适配exsi服务器,可选择exsi7.0等进行适配。

Huajipu的博客 6330

Debian VS Ubantu

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

weixin_63021261的博客 1275

Linux最复杂的命令-find命令

find 在指定目录下查找文件 补充说明 find命令 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 语法 find(选项)(参数) 选项 -amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算; -anewer&l...

DoubleJing的博客 2415

Debian与Ubuntu到底有什么不同,应该如何选择?

镜像下载、域名解析、时间同步请点击 阿里云开源镜像站 在CentOS转向CentOS Stream之后,这意味着它将变得不可靠。 但是幸好,仍然有非常优秀的Linux发行版本在等我们。其中比较有知名度的是Ubuntu以及Debian。 我们经常听到的一句话是: Ubuntu is based on Deibian 那它们究竟有什么区别,如果让你来选择,你要如何选择? 这篇文章中,我将简单的说明一下Ubuntu与Debian究竟有什么不同,它们两者究竟是个什么关系,也许能有助于你做出更好的选择。 1. Ubu

m0_60028455的博客 1万+

Debian项目实战——环境搭建篇

1、:根据自己的需要选择合适的版本格式:x86 / arm 架构 | 最好下载离线安装版本 |2、3、系统媒介:16G以上U盘最佳。

ningsheng的博客 1799

Debian和Ubuntu啥区别

Debian和Ubuntu啥区别

xie__jin__cheng的博客 3588
上一篇: hdu 4986 Arc of Dream 矩阵快速幂求递推式
下一篇: hdu 4819 二维线段树,单点修改区间查询
HuanTongH
博客等级 码龄12年 7粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值