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;
}

浙公网安备 33010602011771号