Big String(poj 2887)
题意:
给你一个不超过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)的更多相关文章
- Power string(poj 2406)
题目大意,给出一个字符串s,求最大的k,使得s能表示成a^k的形式,如 abab 可以表示成(ab)^2: 方法:首先 先求kmp算法求出next数组:如果 len mod (len-next[len ...
- Leetcode#344. Reverse String(反转字符串)
题目描述 编写一个函数,其作用是将输入的字符串反转过来. 示例 1: 输入: "hello" 输出: "olleh" 示例 2: 输入: "A man ...
- 【Hihocoder1413】Rikka with String(后缀自动机)
[Hihocoder1413]Rikka with String(后缀自动机) 题面 Hihocoder 给定一个小写字母串,回答分别把每个位置上的字符替换为'#'后的本质不同的子串数. 题解 首先横 ...
- POJ 2887 Big String(块状链表)
题目大意 给一个字符串,长度不超过 106,有两种操作: 1. 在第 i 个字符的前面添加一个字符 ch 2. 查询第 k 个位置是什么字符 操作的总数不超过 2000 做法分析 好多不同的做法都可以 ...
- 01背包问题:Charm Bracelet (POJ 3624)(外加一个常数的优化)
Charm Bracelet POJ 3624 就是一道典型的01背包问题: #include<iostream> #include<stdio.h> #include& ...
- BFS 或 同余模定理(poj 1426)
题目:Find The Multiple 题意:求给出的数的倍数,该倍数是只由 1与 0构成的10进制数. 思路:nonzero multiple 非零倍数 啊. 英语弱到爆炸,理解不了题意... ...
- 并查集+关系的传递(poj 1182)
题目:食物链 题意:给定一些关系.判断关系的正确性,后给出的关系服从之前的关系: 思路:难点不在并查集,在于关系的判断,尤其是子节点与根节点的关系的判断: 这个关系看似没给出,但是给出子节点与父节点的 ...
- Collecting Bugs(POJ 2096)
Collecting Bugs Time Limit: 10000MS Memory Limit: 64000K Total Submissions: 3064 Accepted: 1505 ...
- Scout YYF I(POJ 3744)
Scout YYF I Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5565 Accepted: 1553 Descr ...
随机推荐
- 树莓派 离线安装 apt-get offline
有网络的地方 sudo cp /var/cache/apt/archives/YOUR_PACK_NAME ~/swap/deb/ 没网络的地方 sudo dpkg -i ~/swap/deb/*
- AJPFX讲解java单例模式
单例设计模式概述: 单例模式就是要确保类在内存中只有一个对象,该实例必须自动创建,并且对外提供单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己自己创建自己的唯一实例. 3 ...
- [BZOJ1025][SCOI2009]游戏 DP+置换群
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1025 题目中的排数就是多少次回到原来的序列.很显然对于题目所描述的任意一种对应法则,其中一 ...
- 前端css3样式前缀自动补全工具--autoprefixer
最近在学习一份来自git的动画框架源码,看懂70%的核心代码后,打算自己动手实践一版,然鹅,所有框架搭起来以后,在动画这块却出了问题: 想设计一个slideInLeft的动画,必然想到了要从偏移-10 ...
- 解决QTreeView不能设置列宽的问题
转载请注明出处:http://www.cnblogs.com/dachen408/p/7206738.html 设置model之前: ui.treeView->setColumnWidth(0, ...
- ubuntu设置root账号密码
Ubuntu Linux有一个与众不同的特点,那就是初次使用时,你无法作为root来登录系统,为什么会这样?这就要从系统的安装说起.对于其他Linux系统来 说,一般在安装过程就设定root密码,这样 ...
- 阿里云ECS安装sqlserver,本地无法连接问题排查思路
1. 阿里云控制台-对应的ECS实例的安全组是否添加了响应的端口(1433)可以访问: 2. 服务器-sqlserver服务是否开启: 3. 服务器-sqlserver配置器,对应的端口是否启用,已经 ...
- Which dispatch method would be used in Swift?-Existential Container
In this example: protocol MyProtocol { func testFuncA() } extension MyProtocol { func testFuncA() { ...
- react link引入外部css样式的坑
刚开始的代码是这样的,使用react router4.x写的demo路由跳转后,页面的没有渲染,是因为没有引入外部css文件(或者说引入外部文件路径错误) <!DOCTYPE html> ...
- D2. Toy Train
D2. Toy Train time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...