博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2887 Big String
阅读量:5952 次
发布时间:2019-06-19

本文共 1973 字,大约阅读时间需要 6 分钟。

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

ab7Q 1I c 2I d 4I e 2Q 5I f 1Q 3

Sample Output

ade

Source

, 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
#include
#include
#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

 

 

 

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

你可能感兴趣的文章
nagios配置监控的一些思路和工作流程
查看>>
通讯组基本管理任务三
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
3D地图的定时高亮和点击事件(基于echarts)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>
从前后端分离到GraphQL,携程如何用Node实现?\n
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
nginc+memcache
查看>>
linux下crontab实现定时服务详解
查看>>
Numpy中的random模块中的seed方法的作用
查看>>
关于jsb中js与c++的相互调用
查看>>
UVA 122 Trees on the level 二叉树 广搜
查看>>
POJ-2251 Dungeon Master
查看>>
tortoisesvn的安装
查看>>
URAL 1353 Milliard Vasya's Function DP
查看>>
速读《构建之法:现代软件工程》提问
查看>>