POJ 2887 Big String

Big String
Time Limit: 1000MS Memory Limit: 131072K
Total Submissions: 7053 Accepted: 1684

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

POJ Monthly--2006.07.30, zhucheng

题目大意 

给一个字符串,长度不超过 106,有两种操作:

    1、Q x(0 < x <= len(s)) 表示查询当前串中第x个字符

    2、I c x(c为字母 0 < x <= len(s)+1)表示在第x个位置插入c字符 x == len+1表示在串尾插入

操作的总数不超过 2000

做法分析

    块状链表裸题。详见代码

#include<cstdio>
#include<cstring>
#include<iostream>
#define m(s) memset(s,0,sizeof s)
using namespace std;
const int N=1010;
int l[N],n,m;
char s[N*N],eg[N][N*3];
void insert(int x,char c){int n1=0,p1,pn=n;for(int i=1;i<=n;i++){if(n1+l[i]>=x){pn=i;break;}if(i==n) break;n1+=l[i];}p1=x-n1;l[pn]=max(p1,l[pn]+1);for(int i=l[pn];i>p1;i--) eg[pn][i]=eg[pn][i-1];eg[pn][p1]=c;
}
void query(int x){int n1=0,p1,pn=n;for(int i=1;i<=n;i++){if(n1+l[i]>=x){pn=i;break;}n1+=l[i];}p1=x-n1;printf("%c\n",eg[pn][p1]);
}
void work(){scanf("%d",&m);int len=strlen(s),ave;ave=(len+999)/1000;n=(len-1)/ave+1;for(int i=0;i<len;i++) eg[i/ave+1][i%ave+1]=s[i],l[i/ave+1]++;while(m--){char c[2];int x;scanf("%s",c);if(c[0]=='I') scanf("%s%d",c,&x),insert(x,c[0]);else scanf("%d",&x),query(x);}
}
int main(){while(scanf("%s",s)==1){m(l);m(eg);work();} return 0;
}

 

 

 

转载于:https://www.cnblogs.com/shenben/p/6270672.html

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

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

相关文章

MySQL For RedHat Linux(源码安装,附安装包)

准备工作在http://pan.baidu.com/s/1GsS3s下载安装包 Mysql.zip把相应的包放在 /opt 目录下 解压mysql.tar.gz 检测系统是否安装MySQL1、执行 #rpm -qa | grep -i mysql如果出现&#xff1a;[rootlocalhost Mysql]# rpm -qa|grep -i mysql [rootlocalhost Mysql]# 则未安装MySQ…

IDEA简单配置教程

IDEA简单配置教程 ——做好前期配置工作&#xff0c;后期少走弯路。 创建模块(Module) 设置(Settings) 设置主题 窗体及菜单字体及大小 设置编辑区主题 通过插件(plugins)更换主题 设置鼠标滚轮修改字体大小 设置鼠标悬浮提示 设置自动导包功能 显示行号和方法间的分隔符 忽略…

Android之解决打补丁包后移动端为什么不升级,升级之后出现“应用未安装“,以及更新成功之后反复更新问题

1、打补丁包后移动端为什么不升级,而且PC端和移动端访问同一个url得到的xml文件内容不一致 不升级是因为补丁包文件搞错了,虽然改了文件内容, pc端访问同一个url得到的xml文件内容不一致,是以为服务端集群导致。 总结: 1)、给客户打补丁包之前一定要到客户后台把相关文件…

MariaDB Spider 数据库分库分表实践 分库分表

分库分表一般来说&#xff0c;数据库分库分表&#xff0c;有以下做法&#xff1a;按哈希分片&#xff1a;根据一条数据的标识计算哈希值&#xff0c;将其分配到特定的数据库引擎中&#xff1b;按范围分片&#xff1a;根据一条数据的标识&#xff08;一般是值&#xff09;&#…

【树莓派】配置介绍

网络是个好东西&#xff0c;好多同学分享的博文&#xff0c;极大的方便我们学习&#xff0c;谢谢~ 1、初始化配置树莓派 装上新系统&#xff0c;连接到树莓派后&#xff0c;一切都是新的&#xff0c;需要配置树莓派的一些选项。 使用putty连接到树莓派后&#xff0c;输入指令su…

C语言之函数指针和函数的首地址

1、爆简单的代码 因为容易忘记&#xff0c;还是再记录一次吧。 2、展示结果 至于函数指针用法&#xff0c;一眼便知对于add和&add你应该这样理解&#xff0c;add是函数的首地址&#xff0c;它的类型是void ()&#xff0c;&add表示一个指向函数add这个对象的地址&#x…

halcon ocr 生成样本变体_Halcon简单文字识别OCR的使用

重要&#xff1a;本文最后更新于2019-10-18 08:49:28&#xff0c;某些文章具有时效性&#xff0c;若有错误或已失效&#xff0c;请在下方留言或联系代码狗。突然想起网上有很多打码挣钱的活动&#xff0c;于是灵光一闪&#xff0c;用C#搞个自动识别验证码的程序出来岂不是自动挣…

Ajax入门(创建 XMLHttpRequest 对象)

XMLHttpRequest 是 AJAX 的基础。 所有现代浏览器均支持 XMLHttpRequest 对象&#xff08;IE5 和 IE6 使用 ActiveXObject&#xff09;。 XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下&#xff0c;对网页的某部分进行更新。 创建 XML…

MFC中卡拉OK字体的定时器实现,使用DC的DrawText函数实现

1 void CTextView::OnTimer(UINT_PTR nIDEvent)2 {3 m_nWidth 5; // 在构造函数中初始化为 0&#xff1b;4 5 CClientDC dc( this );6 TEXTMETRIC tm;7 dc.GetTextMetrics( &tm );8 CRect rect;9 rect.left 0; 10 rect.top 200; 11 re…

WPF 基础控件之Window样式

WPF开发者QQ群&#xff1a; 340500857由于微信群人数太多入群请添加小编微信号yanjinhuawechat 或 W_Feng_aiQ 邀请入群需备注WPF开发者 PS&#xff1a;有更好的方式欢迎推荐。01—代码如下一、创建 Window.cs继承System.Windows.Window代码如下。在WPF自定义类库时需要注意在创…

ngModel 值不更新/显示

angular中的$scope是页面&#xff08;view&#xff09;和数据&#xff08;model&#xff09;之间的桥梁&#xff0c;它链接了页面元素和model&#xff0c;也是angular双向绑定机制的核心。 而ngModel是angular用来处理表单&#xff08;form&#xff09;的最重要的指令&#xff…

linux c之使用pthread_create创建线程pthread_join等待线程和pthread_exit终止线程总结

1、介绍API 1、pthread_create函数 函数简介 pthread_create是UNIX环境创建线程函数 头文件 #include<pthread.h> 函数声明 int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg); 返回值…

postgresql 修改字段名称

1 ALTER TABLE auth_user RENAME email TO aemail; 转载于:https://www.cnblogs.com/tk091/p/4331324.html

go获取项目内所有proto_gRPC学习之三:初试GO版gRPC开发

欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos内容&#xff1a;所有原创文章分类和汇总&#xff0c;及配套源码&#xff0c;涉及Java、Docker、Kubernetes、DevOPS等&#xff1b;本篇概览本文《gRPC学习》系列的第三篇&#xff0c;前文已准备好gRPC开发环境&#xf…

服务端架构中的“网关服务器”

这么一个场景&#xff1a;一个要承载高并发、具有高性能的后台服务&#xff0c;往往会有多个不同的应用服务。问题来了&#xff0c;你会怎样设计架构呢&#xff1f;如下图所示&#xff0c;为了共用一个稳定高效的网络处理功能&#xff0c;把所有服务写在一个进程里。接下来悲剧…

一起来庆祝 .NET 20 周年!

你知道吗&#xff1f;.NET 将要迎来 20 周年, 在 20 年前的 2002 年, 微软公布了下一代的软件、服务的愿景和路线&#xff0c;2 月 13 日&#xff0c;Visual Studio .NET 推出&#xff0c;.NET 开发平台的第一个版本正式向世界发布。而现在, .NET 6 成为统一的开发平台&#xf…

Python pip 国内镜像大全及使用办法

最近写了一篇关于“微软开源分布式高性能GB框架LightGBM安装使用”的文章&#xff0c;有小伙伴安装python环境遇到了问题。我个人也尝试安装了一下&#xff0c;确实遇到了很多问题。最关键的一个就是使用pip安装时&#xff0c;“https://pypi.python.org/simple/scipy/”访问不…

linux c之c语言符合标准的头文件和linux常用头文件

1.C语言符合标准的头文件 #include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> //定义错误码 #include <float.h> //浮点数处理 #include <fstream.h> //文件输入&#xff0f;输出 #include <iomanip.h…

为什么一点onclick按钮就提交表单?

下面是一个表单&#xff0c;有一个onclick按钮&#xff0c;点击后上面文本框的内容被添加到下面的文本域中&#xff0c;并可以一直添加&#xff0c;然后点击submit后提交到另一个页面。但是&#xff0c;在Ie9或者火狐浏览器中我一点onclick为什么总是提交表单&#xff0c;在搜狗…

不固定图片宽高瀑布流_APP设计学习:瀑布流式的产品UI设计

看到好的APP产品UI设计&#xff0c;真是忍不住想要停留几秒&#xff0c;慢慢来欣赏。今天学堂君收集了近期不错的优质的APP设计作品&#xff0c;看起来极舒服的UI界面&#xff0c;分享给大家。这一期的重点学习&#xff1a;在APP界面设计当中&#xff0c;如何应用瀑布流式的布局…