暴力。

收获:

  1、第一道后缀自动机,大概知道怎么写了,有一些原理性的东西还要理解。

  2、计算right集合的大小

 /**************************************************************
Problem: 2555
User: idy002
Language: C++
Result: Accepted
Time:4708 ms
Memory:143072 kb
****************************************************************/ #include <cstdio>
#include <cstring>
#include <iostream>
#define fprintf(...)
#define N 1200010
using namespace std; int n, m;
char buf[N];
int aa[N], mask;
int son[N][], par[N], val[N], siz[N], last, root, ntot; int newnode( int v ) {
int nd=++ntot;
val[nd] = v;
return nd;
}
void init() {
root = last = newnode();
siz[root] = ;
}
void append( int c ) {
int p=last;
int np=newnode( val[p]+ );
for( ; p && !son[p][c]; p=par[p] ) son[p][c] = np;
if( p== ) {
par[np] = root;
} else {
int q = son[p][c];
if( val[q]==val[p]+ ) {
par[np] = q;
} else {
int nq = newnode( val[p]+ );
memcpy( son[nq], son[q], sizeof(son[nq]) );
par[nq] = par[q];
siz[nq] = siz[q];
par[np] = par[q] = nq;
for( ; p && son[p][c]==q; p=par[p] ) son[p][c]=nq;
}
}
last = np;
for( ; np; np=par[np] ) ++siz[np];
}
void append( const char *T ) {
fprintf( stderr, "append( %s )\n", T );
for( ; *T; T++ )
append( *T-'A' );
}
void decode( int mask ) {
fprintf( stderr, "%d\n", mask );
int n = strlen(buf);
for( int j=; j<n; j++ ) {
mask = (mask*+j)%n;
swap( buf[j], buf[mask] );
}
}
int query( const char *T ) {
fprintf( stderr, "query( %s )\n", T );
int n=strlen(T);
int u=root;
for( int i=; i<n; i++ ) {
int c=T[i]-'A';
if( !son[u][c] ) return ;
u=son[u][c];
}
return siz[u];
}
int main() {
scanf( "%d", &m );
scanf( "%s", buf );
init();
append( buf );
for( int i=; i<=m; i++ ) {
char ch[];
scanf( "%s%s", ch, buf );
decode(mask);
if( ch[]=='A' ) {
append(buf);
} else {
int ans = query(buf);
printf( "%d\n", ans );
mask ^= ans;
}
}
}

bzoj 2555的更多相关文章

  1. 【BZOJ 2555】SubString

    http://www.lydsy.com/JudgeOnline/problem.php?id=2555 一个字符串在原串中的出现次数就是这个字符串对应后缀自动机上的状态的\(|Right|\),要求 ...

  2. bzoj 2555 SubString(SAM+LCT)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2555 [题意] 给定一个字符串,可以随时插入字符串,提供查询s在其中作为连续子串的出现 ...

  3. bzoj 2555: SubString 后缀自动机+LCT

    2555: SubString Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 688  Solved: 235[Submit][Status][Dis ...

  4. 字符串(LCT,后缀自动机):BZOJ 2555 SubString

    2555: SubString Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 1620  Solved: 471 Description 懒得写背景了 ...

  5. ●BZOJ 2555 SubString

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2555题解: 后缀自动机+LCT 不难发现,对于输入的询问串,在自动机里trans后的到的状态 ...

  6. 【BZOJ 2555】 2555: SubString (SAM+LCT)

    2555: SubString Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 2548  Solved: 762 Description 懒得写背景了 ...

  7. bzoj 2555 SubString——后缀自动机+LCT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2555 要维护 right 集合的大小.因为 fa 会变,且 fa 构成一棵树,所以考虑用 L ...

  8. bzoj 2555 SubString —— 后缀自动机+LCT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2555 建立后缀自动机,就可以直接加入新串了: 出现次数就是 Right 集合的大小,需要查询 ...

  9. bzoj 2555: SubString

    Description 懒得写背景了,给你一个字符串init,要求你支持两个操作 (1):在当前字符串的后面插入一个字符串 (2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 你必须在线支 ...

随机推荐

  1. 【洛谷题解】P2303 [SDOi2012]Longge的问题

    题目传送门:链接. 能自己推出正确的式子的感觉真的很好! 题意简述: 求\(\sum_{i=1}^{n}gcd(i,n)\).\(n\leq 2^{32}\). 题解: 我们开始化简式子: \(\su ...

  2. Django-模板继承、包含和静态文件配置

    一.模板继承 模板继承可以减少页面内容的重复定义,实现页面内容的重用 典型应用:网站的头部.尾部是一样的,这些内容可以定义在父模板中,子模板不需要重复定义 block标签:在父模板中预留区域,在子模板 ...

  3. docker stack 部署 redis

    =============================================== 2019/4/16_第2次修改                       ccb_warlock 更新 ...

  4. ActiveMQ:初见&安装试运行

    官网:http://activemq.apache.org/ ActiveMQ是一个消息中间件,在大型互联网应用中有广泛的使用. 当前最新版本:5.15.4,发布于2018-05-22,开源.Apac ...

  5. java基础79 会话管理(Cookie技术、Session技术)

    1.概念     会话管理:管理浏览器和服务器之间会话过程中产生的会话数据.    Cookie技术:会话数据保存到浏览器客户端.[存 编号/标记(id)]    Session技术:会话技术会保存到 ...

  6. Python 离线环境

    一.应用场景 比如:对于数据安全要求比较严格的机房,服务器是不允许上网的.那么我现在开发了一套python程序,需要一些模块,怎么运行? 二.离线包制作 有2个解决方案: 1. 使用requireme ...

  7. Spark-Streaming总结

    文章出处:http://www.cnblogs.com/haozhengfei/p/e353daff460b01a5be13688fe1f8c952.html Spark_总结五 1.Storm 和 ...

  8. 同时装有py2 和3,运行scrapy如何区分

    1未区分环境 python2 -m scrapy startproject xxx python3 -m scrapy startproject xxx 当然,执行的时候也是 python2 -m s ...

  9. USACO 6.3 Cowcycles

    CowcyclesOriginally by Don Gillies [International readers should note that some words are puns on co ...

  10. loadrunner录制时,设置能不记录所有的事件

    loadrunner录制时,设置能不记录所有的事件 可以做如下两点设置: 1. 在record option下的recording选项卡下选择html advance,在script type下选择A ...