Big String poj 2887
2018-03-06 21:14
337 查看
题目
给你一个不超过1e6的字符串,和不超过2000次的操作操作分为两种:
1.将一个字符插入到某个位置的前面
2.询问当前位置的字符
分析
分块把队列分为分块后暴力操作即可
ps:可以用二分节省时间。
code
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> #include<string> #include<cmath> #define long long LL; using namespace std; const int inf=0x3f3f3f3f; const int mod=1e9+7; const int N=1e3+10; char s[N*N],belong [N*3],in[2]; int l ,n,m,x; void add(char ch,int x) { int nl=0,pn; for(int i=1;i<=n;i++) { if(nl+l[i]>=x){pn=i;break;} if(i==n) {pn=n;break;} nl+=l[i]; } int p=min(l[pn],x-nl-1); for(int i=l[pn];i>p;i--) belong[pn][i]=belong[pn][i-1]; belong[pn][p]=ch; l[pn]++; } char query(int x) { int nl=0; for(int i=1;i<=n;i++) { if(nl+l[i]>=x) return belong[i][x-nl-1]; nl+=l[i]; } } int main() { while (~scanf("%s",s)) { int len=strlen(s); int block=sqrt(len+999)+10; n=(len-1)/block+1; for (int i=1;i<=n;i++) l[i]=block; for (int i=0;i<len;i++) belong[i/block+1][i%block]=s[i]; l =(len-1)%block+1; scanf("%d",&m); while (m--) { scanf("%s",in); if(in[0]=='Q') { scanf("%d",&x); printf("%c\n",query(x)); } else { scanf("%s%d",in,&x); add(in[0],x); } } } return 0; }
相关文章推荐
- java.lang.ClassCastException:java.math.BigDecimal cannot be cast to java.lang.String
- poj 3013 Big Christmas Tree(最短路变形)
- zoj1633 Big String dfs
- new BigDecimal(0.01) 与 new BigDecimal(String.valueOf(0.01))的区别 (转)
- POJ 3013 Big Christmas Tree 最短路
- BigDecimal(-)Difference of BigDecimal toString() method between JDK1.4 and above version
- 最短路 Big Christmas Tree POJ - 3013
- String的Big-Three
- POJ 1035 Spell checker(string)应用
- poj 3013 Big Christmas Tree 最短路
- java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String
- POJ 3007 Organize Your Train part II map+string
- 使用new BigDecimal(String val)来构造小数
- poj 3013 Big Christmas Tree 最短路 dijkstra算法
- POJ-2406 Power string
- Phone List POJ - 3630 (字典树或string)
- ZOJ&nbsp;1633&nbsp;big&nbsp;string
- java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String
- POJ 3080 Blue Jeans (利用 C语言的string.h库中的strstr函数)
- 【错误集锦】——java.math.BigDecimal cannot be cast to java.lang.String