POJ 1523

http://poj.org/problem?id=1523

vector真是个好东西

可以非常方便地实现块状链表

#include<cstdio>
#include<vector>
#include<math.h>
#include<cstring> 
#include<iostream>
#define FOR(i,s,t) for(register int i=s;i<=t;++i)
const int N=1000011;
std::vector<char>v[1011];
char S[N],Q[5],A[5];
int len,blo,t,k,las,n;
int main(){
	gets(S+1);
	len=strlen(S+1);
	blo=(int)(sqrt(1.00*len));
	FOR(i,1,len)v[(i-1)/blo+1].push_back(S[i]);
	v[(len-1)/blo+1].push_back('a');
	scanf("%d",&n);
	FOR(i,1,n){
		scanf("%s",Q);
		if(Q[0]=='Q'){
			scanf("%d",&k);--k;
			for(t=1;k>=v[t].size();++t)k-=v[t].size();
			printf("%c\n",v[t][k]);
		}
		else{
			scanf("%s%d",A,&k);--k;
			for(t=1;k>=v[t].size();++t)k-=v[t].size();
			v[t].insert(v[t].begin()+k,A[0]);
		}
	}
	return 0;
}

  

posted @ 2017-11-30 19:55  Stump  阅读(184)  评论(0编辑  收藏  举报