题目

分析

好吧。。。明显是暴力题。

首先,把A串分成只有小写字母组成的小分串,按顺序存放:A[1]、A[2]、A[3]……。

对于同构循环串,显然把两个B串合在一起,成为一个新的C串。\(C[i...i+m-1]\)(1<=i<=|B|)就是一个同构循环串。

接着设\(f[i][j]\)指在\(C[i+1...|C|]\)中第一个A[j]的位置,可以用kmp求出来。

然后就可以愉愉快快得暴力啦!

暴力:对于一个同构循环串\(C[i...i+|B|-1]\),设k=i-1,每次k调到下一个A的小分串的结尾(即k=f[k][j]+len[j]-1(当前做到的是第j个小分串)),当k>i+|B|-1,那么就是说在\(C[i...i+|B|-1]\)中没有对应的A串,break。

注意判断A串的开头结尾不是‘*’的情况。开头情况的:如果\(f[0][1]<>1\)就continue。结尾一样。

#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxlongint=2147483647;
using namespace std;
char sm[210000],sn[110][110];
int n,m,ans,tot,pos[110],len[110],tt,f[200500][102];
int next[110];
int kmp(int x)
{
memset(next,0,sizeof(next));
int j=0;
for(int i=2;i<=len[x];i++)
{
while(j>0 && sn[x][i]!=sn[x][j+1])
j=next[j];
if(sn[x][i]==sn[x][j+1])
j++;
next[i]=j;
}
j=0;
for(int i=1;i<=2*m;i++)
{
while(j>0 && sm[i]!=sn[x][j+1])
j=next[j];
if(sm[i]==sn[x][j+1])
j++;
if(j==len[x])
{
f[i-j+1-1][x]=i-j+1;
}
}
}
int main()
{
scanf("%s\n%s\n",sn[0]+1,sm+1);
n=strlen(sn[0]+1);
m=strlen(sm+1);
for(int i=1;i<=m;i++)
{
sm[m+i]=sm[i];
}
for(int i=1;i<=n;i++)
{
if(sn[0][i]!='*')
{
pos[++tot]=i;
len[tot]=0;
while(sn[0][len[tot]+1+pos[tot]-1]!='*' && len[tot]+1+pos[tot]-1<=n)
{
sn[tot][++len[tot]]=sn[0][len[tot]+pos[tot]-1];
}
i=len[tot]+pos[tot]-1;
}
}
for(int j=1;j<=tot;j++)
kmp(j);
for(int i=2*m;i>=0;i--)
{
for(int j=1;j<=tot;j++)
{
if(!f[i+1][j])
f[i+1][j]=maxlongint/5;
if(!f[i][j])
{
f[i][j]=f[i+1][j];
}
}
}
for(int i=1;i<=m;i++)
{
if(sn[0][1]!='*')
{
if(f[i-1][1]!=i) continue;
}
if(sn[0][n]!='*')
{
if(f[i+m-1-len[tot]+1-1][tot]!=i+m-1-len[tot]+1) continue;
}
int k=i-1;
for(int j=1;j<=tot;j++)
{
k=f[k][j]+len[j]-1;
if(k>i+m-1)
{
ans--;
break;
}
}
ans++;
}
printf("%d",ans);
}

【NOIP2013模拟】归途与征程的更多相关文章

  1. 【NOIP2013模拟】终极武器(经典分析+二分区间)

    No.2. [NOIP2013模拟]终极武器 题意: 给定你一些区间,然后让你找出\(1\sim 9\)中的等价类数字. 也就是说在任何一个区间里的任何一个数,把其中后\(k\)位中的某一位换成等价类 ...

  2. JZOJ 3493. 【NOIP2013模拟联考13】三角形

    3493. [NOIP2013模拟联考13]三角形(triangle) (File IO): input:triangle.in output:triangle.out Time Limits: 10 ...

  3. JZOJ 3487. 【NOIP2013模拟联考11】剑与魔法(dragons)

    3487. [NOIP2013模拟联考11]剑与魔法(dragons) (Standard IO) Time Limits: 1000 ms  Memory Limits: 131072 KB  De ...

  4. JZOJ 3470. 【NOIP2013模拟联考8】最短路(path)

    470. [NOIP2013模拟联考8]最短路(path) (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed ...

  5. JZOJ 3388. 【NOIP2013模拟】绿豆蛙的归宿

    3388. [NOIP2013模拟]绿豆蛙的归宿 (Standard IO) Time Limits: 1000 ms  Memory Limits: 131072 KB  Detailed Limi ...

  6. JZOJ 3463. 【NOIP2013模拟联考5】军训

    3463. [NOIP2013模拟联考5]军训(training) (Standard IO) Time Limits: 2000 ms  Memory Limits: 262144 KB  Deta ...

  7. JZOJ 3462. 【NOIP2013模拟联考5】休息(rest)

    3462. [NOIP2013模拟联考5]休息(rest) (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed ...

  8. JZOJ 3461. 【NOIP2013模拟联考5】小麦亩产一千八(kela)

    3461. [NOIP2013模拟联考5]小麦亩产一千八(kela) (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Det ...

  9. JZOJ 3509. 【NOIP2013模拟11.5B组】倒霉的小C

    3509. [NOIP2013模拟11.5B组]倒霉的小C(beats) (File IO): input:beats.in output:beats.out Time Limits: 1000 ms ...

  10. JZOJ 3508. 【NOIP2013模拟11.5B组】好元素

    3508. [NOIP2013模拟11.5B组]好元素(good) (File IO): input:good.in output:good.out Time Limits: 2000 ms  Mem ...

随机推荐

  1. HAProxy、Keepalived 在 Ocatvia 的应用实现与分析

    目录 文章目录 目录 Amphora 启动 keepalived 启动 haproxy 最后 Amphora 创建一个 loadbalancer 需要占用一到两台 Amphora Instance 作 ...

  2. Spring中通过变量和import标签来控制加载哪些bean

    需求:根据设置变量,来加载某个spring的bean的配置文件,这个配置文件中,有某些使用的bean.在一些情况下,不希望这些bean被初始化和加载进context中,也不需要被外面访问到. 在spr ...

  3. Flink的基本概念

    Stream.Transformation.Operator 用户实现的Flink程序是由Stream和Transformation这两个基本构建块组成,其中Stream是一个中间结果数据,而Tran ...

  4. zabbix+grafana使用

    参照文档 https://blog.csdn.net/xiegh2014/article/details/54928883

  5. jmeter常用性能监听器分析

    jmeter中提供了很多性能数据的监听器,我们通过监听器可以来分析性能瓶颈 本文以500线程的阶梯加压测试结果来描述图表. 常用监听器 1:Transactions per Second 监听动态TP ...

  6. 15.永恒之蓝exp----

    永恒之蓝exp 2017年,影响于全世界 SMB ripid7官网获取ms17-010的exp信息 Rapid7: https://www.rapid7.com/db/modules/exploit/ ...

  7. 解决172.17 或者172.18 机房环境下harbor服务器不通的问题

    直接改docker-compose.yml文件: 把原来的network选项注释掉,自定义 #networks: # harbor: # external: false networks: harbo ...

  8. 分享一个linux中测试网站是否正常的shell脚本

    #! /bin/bash #Author=Harry CheckUrl() { #<==定义函数,名字为CheckUrl timeout=5 #<==定义wget访问的超时时间,超时就退出 ...

  9. [转帖]OEM、ODM、OBM分别是什么?

    OEM.ODM.OBM分别是什么? https://blog.csdn.net/liangtianmeng/article/details/83215500 感觉很多地方说明的都不对 OEM 别人的产 ...

  10. JSP页面读取数据中的数据内容,出现乱码现象的解决方法

    1.首先要确保JSP页面的编码已修改为“utf-8”的字符编码: 2.然后再在jsp页面上添加代码进行设置: 先用getBytes()方法读出数据,然后再new String()方法设置格式为“utf ...