POJ 1523

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

vector真是个好东西

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#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 @   Stump  阅读(185)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示