bzoj 3059: 归途与征程
Description
给出一个长度为N的由小写字母’a’~’z’和’*’组成的字符串A,一个长度为M的仅由小写字母’a’~’z’组成的字符串B。一个’*’可以匹配任意多个字符(包括0个)。求在B的所有循环同构串中,有多少个能够与A匹配。
循环同构串:就是把B的前k个字母(0<=k<M)移到结尾所得到的M个字符串。例如abc的循环同构串有abc、bca和cab。
A与B匹配:若除了A中的’*’号可以匹配B中的任意多个字符外,其余字符一一对应,则称A与B匹配。例如a*b*c与aadbc是匹配的,其中第一个*对应ad,第二个*对应空串。
Input
第一行为字符串A。
第二行为字符串B。
Output
输出在B的所有循环同构串中,有多少个能够与A匹配。
#include<cstdio>
#include<cstring>
char s1[],s2[],*ss[];
int l1,l2,sp=,ls[];
int nx[][],ans=;
int main(){
scanf("%s%s",s1+,s2+);
l1=strlen(s1+);
l2=strlen(s2+);
memcpy(s2+l2+,s2+,l2);
s1[]=s1[l1+]='*';
for(int i=;i<=l1+;++i)if(s1[i-]=='*'){
ss[sp]=s1+i;
while(ss[sp][ls[sp]]!='*')++ls[sp];
++sp;
}
--sp;
for(int i=;i<=sp;++i){
nx[i][l2*]=l2*;
for(int j=l2*-;j;--j){
nx[i][j]=memcmp(ss[i],s2+j,ls[i])?nx[i][j+]:j;
}
}
for(int i=;i<=l2;++i){
int mx=i+l2-ls[sp];
if(mx>&&nx[][i]==i&&nx[sp][mx]==mx){
int w=i;
for(int i=;i<sp&&w<=mx;++i)w=nx[i][w]+ls[i];
ans+=(w<=mx);
}
}
return printf("%d\n",ans),;
}
bzoj 3059: 归途与征程的更多相关文章
- 【NOIP2013模拟】归途与征程
题目 分析 好吧...明显是暴力题. 首先,把A串分成只有小写字母组成的小分串,按顺序存放:A[1].A[2].A[3]--. 对于同构循环串,显然把两个B串合在一起,成为一个新的C串.\(C[i.. ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- 为 Sublime Text 3059 配置 PHP 编译环境
关于 Sublime Text 3059 的安装及汉化 请参看 http://www.xiumu.org/note/sublime-text-3.shtml 为 sublime Text 配置 PH ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
- 【sdoi2013】森林 BZOJ 3123
Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...
随机推荐
- CentOS7.2 安装RabbitMQ3.6.10
CentOS上面使用yum安装比较方便 先记录一些rabbitmq的基本操作命令: $ sudo chkconfig rabbitmq-server on # 添加开机启动RabbitMQ服务 $ s ...
- AOP Schema配置
AOP(Aspect-Oriented Programming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入封装.继承和 ...
- Linux清除Windows密码
下载安装ntfs-3g 下载驱动让linux挂载windows磁盘 https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2017.3.23.tgz 安装 t ...
- Message: dlopen failed for module ‘x’: file not found
这是未安装bochs-x的缘故 解决方案: sudo apt-get install bochs以后接着安装bochs-x. sudo apt-get install bochs-x 2.bx_dbg ...
- python 输出所有列表元素的乘积
def multiply_list(items): tot = 1 for x in items: tot *= x return tot print(multiply_list([1,2,-8]))
- thinkphp3.2笔记(3)视图渲染 模板的赋值与显示 系统变量
一 视图 1 视图渲染 渲染模板输出最常用的是使用display方法,调用格式:display('[模板文件]'[,'字符编码'][,'输出类型'])模板文件的写法支持下面几种:用法 描述不带任何 ...
- Tornado源码分析 --- Etag实现
Etag(URL的Entity Tag): 对于具体Etag是什么,请求流程,实现原理,这里不进行介绍,可以参考下面链接: http://www.oschina.net/question/234345 ...
- LINUX 操作记录到syslog,并发送到syslog服务器上
首先配置命令记录到syslog中: 在客户端的/etc/bashrc 下添加: logger -p local3.info \"`who am i` ================== ...
- MySQL使用和操作总结(《MySQL必知必会》读书笔记)
简介 MySQL是一种DBMS,即它是一种数据库软件.DBMS可分为两类:一类是基于共享文件系统的DBMS,另一类是基于客户机——服务器的DBMS.前者用于桌面用途,通常不用于高端或更关键应用. My ...
- Uedit个人专注
Uedit个人专注 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\Shell\Uedit] [HKEY_CLASSES_ROO ...