题意:

给你一个不超过1e6的字符串,和不超过2000次的操作

操作分为两种:

1.将一个字符插入到某个位置的前面

2.询问当前位置的字符

/*
块状链表模板水题(我的智商也就能做这种题了)。
观察题目,我们发现询问次数是很少的,所以可以考虑暴力?
很明显暴力就会gg,但是可以把这n个字母分为√n 块,然后查找的时候先用√n的时间找出在哪一块,
然后只在这一块中找就行了。
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#define N 1010
using namespace std;
int l[N],n,m,len;
char s[N*N],eg[N][N*];
void add(char c,int x){
int n1=,pn=n;
for(int i=;i<=n;i++){
if(n1+l[i]>=x){pn=i;break;}
if(i==n)break;
n1+=l[i];
}
int pos=x-n1;l[pn]=max(pos,l[pn]+);
for(int i=l[pn];i>pos;i--)
eg[pn][i]=eg[pn][i-];
eg[pn][pos]=c;
}
void query(int x){
int n1=,pn=n;
for(int i=;i<=n;i++){
if(n1+l[i]>=x){pn=i;break;}
n1+=l[i];
}
int pos=x-n1;
printf("%c\n",eg[pn][pos]);
}
void work(){
scanf("%d",&m);
int len=strlen(s),ave;
ave=(len+)/;
n=(len-)/ave+;
for(int i=;i<len;i++) eg[i/ave+][i%ave+]=s[i],l[i/ave+]++;
while(m--){
char c[];int x;
scanf("%s",c);
if(c[]=='Q') scanf("%d",&x),query(x);
else scanf("%s%d",c,&x),add(c[],x);
}
}
int main(){
while(~scanf("%s",s)){
memset(l,,sizeof(l));
memset(eg,,sizeof(eg));
work();
}
return ;
}

Big String(poj 2887)的更多相关文章

  1. Power string(poj 2406)

    题目大意,给出一个字符串s,求最大的k,使得s能表示成a^k的形式,如 abab 可以表示成(ab)^2: 方法:首先 先求kmp算法求出next数组:如果 len mod (len-next[len ...

  2. Leetcode#344. Reverse String(反转字符串)

    题目描述 编写一个函数,其作用是将输入的字符串反转过来. 示例 1: 输入: "hello" 输出: "olleh" 示例 2: 输入: "A man ...

  3. 【Hihocoder1413】Rikka with String(后缀自动机)

    [Hihocoder1413]Rikka with String(后缀自动机) 题面 Hihocoder 给定一个小写字母串,回答分别把每个位置上的字符替换为'#'后的本质不同的子串数. 题解 首先横 ...

  4. POJ 2887 Big String(块状链表)

    题目大意 给一个字符串,长度不超过 106,有两种操作: 1. 在第 i 个字符的前面添加一个字符 ch 2. 查询第 k 个位置是什么字符 操作的总数不超过 2000 做法分析 好多不同的做法都可以 ...

  5. 01背包问题:Charm Bracelet (POJ 3624)(外加一个常数的优化)

    Charm Bracelet    POJ 3624 就是一道典型的01背包问题: #include<iostream> #include<stdio.h> #include& ...

  6. BFS 或 同余模定理(poj 1426)

    题目:Find The Multiple 题意:求给出的数的倍数,该倍数是只由 1与 0构成的10进制数. 思路:nonzero multiple  非零倍数  啊. 英语弱到爆炸,理解不了题意... ...

  7. 并查集+关系的传递(poj 1182)

    题目:食物链 题意:给定一些关系.判断关系的正确性,后给出的关系服从之前的关系: 思路:难点不在并查集,在于关系的判断,尤其是子节点与根节点的关系的判断: 这个关系看似没给出,但是给出子节点与父节点的 ...

  8. Collecting Bugs(POJ 2096)

    Collecting Bugs Time Limit: 10000MS   Memory Limit: 64000K Total Submissions: 3064   Accepted: 1505 ...

  9. Scout YYF I(POJ 3744)

    Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5565   Accepted: 1553 Descr ...

随机推荐

  1. angular.module 参数的意思

    定义一个module需要两个参数,第一个作为module的名字,第二个则是指出这个module都依赖哪些别的modules

  2. php微信自动发红包

    <?phpheader('Content-type:text');define("TOKEN", "weixin");$wechatObj = new w ...

  3. Java多线程——进程和线程

    Java多线程——进程和线程 摘要:本文主要解释在Java这门编程语言中,什么是进程,什么是线程,以及二者之间的关系. 部分内容来自以下博客: https://www.cnblogs.com/dolp ...

  4. Android ImageView setImageBitmap 不显示图片

    从sd卡里读出图片后有时调用setImageBitmap(bitmap)方法会显示不出图片,仔细考虑过后原来是加载的图片过大导致的,解决办法为: BitmapFactory.Options op = ...

  5. 关于react native在window下运行安卓的时候报 could not connect to development server

    当出现这种问题是网上的解答方案都是一模一样的! 我这边先给个地址讲的是解决方案http://blog.csdn.net/qq_25827845/article/details/52974991 但是我 ...

  6. 获取请求服务器传输协议http or https

    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PO ...

  7. 常用css属性拓展

    text-overflow:clip | ellipsis(默认值:clip)clip:当内联内容溢出块容器时,将溢出部分裁切掉.ellipsis:当内联内容溢出块容器时,将溢出部分替换为(...). ...

  8. 玩转CPU运行曲线

    Leaf 是不是从来没有想过看看cpu运行曲线啊骚年?顶多也就仅仅是看看cpu利用率,吓自己一跳后感觉关闭几个不该打开的程序~ 然而问题来了,微软公司要让你绘制cpu运行曲线啊!!不仅是固定的直线,还 ...

  9. 15年第六届蓝桥杯第七题_手链样式_(stl_string)

    手链样式 小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙.他想用它们串成一圈作为手链,送给女朋友.现在小明想知道:如果考虑手链可以随意转动或翻转,一共可以有多少不同的组合样式呢? 请你提交该整数.不要填写任 ...

  10. Android原生方式获取经纬度

    两种定位方式:GPS定位.WiFi定位优劣: 如果项目定位要求较高还是建议使用三方地图库 GPS定位相比Wifi定位更精准且可在无网络情况下使用,但在室内基本暴毙无法使用WiFi定位没有室内外限制也不 ...