【问题描述】

因为是蒯的题所以没想好名字,为什么要用繁体呢?去看《唐诗三百首》吧!

题意很简单,给你一个串,求他有多少个不同的子串,满足前缀为A,后缀为B。

需要注意的是,串中所有的字母都是小写字母。

友情提示:如果你过不了样例,请注意是不同的子串。                    

【输入文件】

一共3行。

第一行母串S;

第二行串A;

第三行串B。

【输出文件】

一个数,即有多少不同的子串。

【输入样例】

abababab

a

b

【输出样例】

4

【数据规模和约定】

100%:

length(S)<=2000;

length(A)<=2000;

length(B)<=2000;

30%:都少个0

字符串hash

首先,枚举每一个后缀是否前缀为A,front[i]表示i~l-1的前缀是否为A

同理处理出bside[i]表示0~i的后缀是否为B

枚举左右端点,可知当2个数组都为1才为一个解

但是解不能重复

于是用字符串hash,就是将字符串转数

hash[i]表示0~i的hash值

hash[i]=((hash[i-1]*p+idx(s[i]))%Mod

Mod和p都要慎重考虑,p取31,Mod取1e7+7

那么l~r的hash值为:hash(l~r)=(hash[r]-hash[l-1]*p^(r-l+1)+Mod)%Mod

一般Mod取1e9+7,但是这里要用bool数组,所以取1e7+7

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int p=,Mod=;
int l,la,lb,front[],bside[];
char s[],A[],B[];
long long pow[],hash[],ans;
bool vis[];
bool ask(int x,int y)
{
long long h=(hash[y]-(hash[x-]*pow[y-x+]%Mod)+Mod)%Mod;
if (vis[h]==)
{
vis[h]=;
return ;
}
else
{
return ;
}
}
int main()
{int i,j;
//freopen("noname.in","r",stdin);
//freopen("noname.out","w",stdout);
cin>>s;
cin>>A;
cin>>B;
l=strlen(s);
la=strlen(A);
lb=strlen(B);
for (i=;i<l;i++)
{
for (j=;j<=la,j+i-<l;j++)
if (A[j-]!=s[i+j-]) break;
if (j>la)
front[i]=;
}
for (i=l-;i>=;i--)
{
for (j=;j<=lb,i-j+>=;j++)
if (B[lb-j]!=s[i-j+]) break;
if (j>lb)
bside[i]=;
}
hash[]=(int)s[]-;
for (i=;i<=l;i++)
{
hash[i]=(hash[i-]*p+(int)s[i-]-)%Mod;
}
pow[]=;
for (i=;i<=l;i++)
pow[i]=(pow[i-]*p)%Mod;
for (i=;i<l;i++)
{
for (j=i+max(la,lb)-;j<l;j++)
if (front[i]&&bside[j])
if (ask(i+,j+)) ans++;
}
cout<<ans;
}

無名(noname)的更多相关文章

  1. [测试题]無名(noname)

    Description 因为是蒯的题所以没想好名字,为什么要用繁体呢?去看<唐诗三百首>吧! 题意很简单,给你一个串,求他有多少个不同的子串,满足前缀为A,后缀为B. 需要注意的是,串中所 ...

  2. CentOS7安全设置 yum-cron系统自动更新,firewalld防火墙简单使用

    PermitRootLogin nosystemctl restart sshd.service; yum -y install firewalld; systemctl start firewall ...

  3. newlisp

    Windows で使う場合 Windoows用のインストーラからインストールすると.newLISP のIDE用のアイコンが出来るのでそこから使ってもいいし.コマンドプロンプトで newlisp と入力 ...

  4. RAMOS (内存操作系统)-无忧百科(不断完善中)

    RAMOS (内存操作系统)-无忧百科(不断完善中) - RAMOS - 无忧启动论坛 - Powered by Discuz! http://bbs.wuyou.net/forum.php?mod= ...

  5. C# 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC

    本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 官方 ...

  6. Gson - 学习

    Google 的 Gson 库,Gson 是一个非常强大的库,可以将 JSON 格式的数据转化成 Java 对象,也支持将 Java 对象转成 JSON 数据格式. Gson 依赖 本文将会快速开始使 ...

  7. Kafka生产者APi

    kafka客户端发布record(消息)到kafka集群. 新的生产者是线程安全的,在线程之间共享单个生产者实例,通常单例比多个实例要快. 一个简单的例子,使用producer发送一个有序的key/v ...

  8. python 读写西门子PLC 包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC

    本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 nu ...

  9. java android 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC

    本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 gi ...

随机推荐

  1. 第二次作业:软件分析之Steam的前世今生

    摘要:本次作业我将介绍一下Steam的相关内容,以及对Steam的相关调研测评,以及需求分析,最后就是对Steam的建议以及在中国的发展提出相应的建议 一.相关信息      Steam是一个整合游戏 ...

  2. 201621123040《Java程序设计》第12周学习总结

    1.本周学习总结 2.面向系统综合设计-图书馆管理系统或购物车 2.1简述如何使用流与文件改造你的系统.文件中数据的格式如何? 将书目信息写入文件,查阅图书馆书目信息时,实现文件的读取 2.2简述系统 ...

  3. Beta阶段敏捷冲刺报告-DAY1

    Beta阶段敏捷冲刺报告-DAY1 Scrum Meeting 敏捷开发日期 2017.11.2 讨论时间 20:30 讨论地点 下课路上以及院楼侧门 参会人员 项目组全体成员 会议内容 附加功能讨论 ...

  4. 第14、15週PTA題目的處理

    題目1 選擇法排序 1.實驗代碼 #include <stdio.h> #include <stdlib.h> int main() { int n,index,exchang ...

  5. 详谈C++虚函数表那回事(一般继承关系)

    沿途总是会出现关于C++虚函数表的问题,今天做一总结: 1.什么是虚函数表: 虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的.简称为V-Table. ...

  6. android 广播,manifest.xml注册,代码编写

    1.种 private void downloadBr(File file) {   // 广播出去,由广播接收器来处理下载完成的文件   Intent sendIntent = new Intent ...

  7. 前端面试之angular JS

    1. angular的数据绑定采用什么机制?详述原理 angularjs的双向数据绑定,采用脏检查(dirty-checking)机制.ng只有在指定事件触发后,才进入 $digest cycle : ...

  8. 【Learning】 多项式的相关计算

    约定的记号 对于一个多项式\(A(x)\),若其最高次系数不为零的项是\(x^k\),则该多项式的次数为\(k\). 记为\(deg(A)=k\). 对于\(x\in(k,+ \infty)\),称\ ...

  9. C# 使用 ffmpeg 进行音频转码

    先放一下 ffmpeg 的官方文档以及下载地址: 官方文档:http://ffmpeg.org/ffmpeg.html 下载地址:http://ffmpeg.org/download.html 用 f ...

  10. (干货)微信小程序之上传图片和图片预览

    这几天一直负责做微信小程序这一块,也可以说是边做边学习吧,把自己做的微信小程序的一些功能分享出来,与大家探讨一下,相互学习相互进步. 先看下效果图 只写了一下效果样式的话希望大家不要太在意,下面马路杀 ...