zufe-机智的zhourist
来源:互联网 发布:大数据安全管理 编辑:程序博客网 时间:2024/05/01 00:05
Problem E: 机智的zhourist
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 22 Solved: 7
[Submit][Status][Web Board]
Description
这一天,ZUFE信息管理与工程学院收到了来历不明的信息,经过艰难的破译,信息被翻译成了一串字符串,以及两种操作:
push x
在字符串的最后加上一个字母
pop
删除字符串最后一个字母
但是我们发现,这样的信息毫无用处,于是机智zhourist提出,让我们来求字符串的循环次数吧。不过这个问题对于zhourist来说实在太过简单,所以现在就交给你们来做了。
Input
多组测试数据。
每组测试数据第一行输入n,m(n表示初始字符长度,m表示操作次数)
0<n,m<=100000
保证操作过程中字符串不为空。保证字符只有小写字母
Output
对于每个操作,输出该操作结束后字符串的循环次数。
Sample Input
5 3
ababa
push b
pop
pop
Sample Output
3
1
2
HINT
样例解释,第一个操作加入了b,变成了ababab最小循环节是ab,循环次数是3
第二个操作弹出b,变成了ababa,最小循环节是ababa,循环次数是1
第三个操作,弹出a,变成了abab,最小循环节是ab,循环次数是2
#include <iostream>#include <stdio.h>#include <string.h> using namespace std; const int maxn=2e5+10;char s[maxn],ch[maxn];int nt[maxn]; void getnext(int x){ int k=nt[x]; while(k>=0&&s[k]!=s[x]) { k=nt[k]; } nt[x+1]=k+1;} int main(){ int n,m; while(~scanf("%d%d",&n,&m)) { scanf("%s",s); nt[0]=-1; for(int i=0; i<n; i++) getnext(i); while(m--) { scanf("%s",ch); if(!strcmp("pop",ch)) { n--; printf("%d\n",n%(n-nt[n])?1:n/(n-nt[n])); } else { scanf("%s",ch); s[n]=ch[0]; getnext(n++); printf("%d\n",n%(n-nt[n])?1:n/(n-nt[n])); } } } return 0;}
0 0
- zufe-机智的zhourist
- 游戏《机智的小鸟》
- 机智的交换函数
- 机智的末位无空格
- 机智的偶数求和
- 机智的简单计算器
- 妙语连珠-机智的回答
- mybatis的缓存机智
- 机智的AmyZhi
- zufe oj 免费的pizza (简单DP)
- zufe 神奇的序列计算 (树状数组)
- 2315: 小明的智力(ZUFE)
- ZUFE-无人能解的数学难题
- 你这个机智的家伙
- ZOJ_3591_Nim_机智的前缀和
- ZOJ 3475(机智的暴力)
- acm 2045 无尽的机智
- 机智的图灵机器人
- HDU 1501 Zipper (DFS+剪枝做法)
- IOS开发中,SVN如何恢复到某一个版本(以Cornerstone为例)
- SVN初识
- uva10564
- 异常捕捉先后顺序------getCustomerInfo()方法如下,try中可以捕获三种类型的异常,如果在该方法运行中产生了一个IOException,将会输出什么结果()
- zufe-机智的zhourist
- CodeForces - 552A Vanya and Table (水)
- APN
- 工作流学习网址
- 使用grunt实现css压缩
- Oracle内置表一
- iOS中解析 XML / JSON格式讲解
- linux管道(pipe)
- iOS 自带定位功能CoreLocation