当前位置: 首页 > news >正文

厦门加盟网站建设网站搭建免费

厦门加盟网站建设,网站搭建免费,discuz做电影网站,做网站推广引流效果好吗链接&#xff1a;http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode3587 题意&#xff1a;给出两个字符串S和T。S,T<100000.拿出S的两个子串&#xff08;能够重叠&#xff09;&#xff0c;将两个子串连接起来成为字符串T的方法有多少种。 思路&#xff1a;用扩…

链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3587

题意:给出两个字符串S和T。S,T<=100000.拿出S的两个子串(能够重叠),将两个子串连接起来成为字符串T的方法有多少种。

思路:用扩展KMP求出S的从每位開始的子串与T的公共前缀,再将两个子串翻转,再用扩展KMP求出S反的从每位開始的子串与T反的公共前缀。找出当中和为T子串长度的S公共前缀和S反的公共前缀的数量,相乘为结果。

代码:

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <ctype.h>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
#define eps 1e-8
#define INF 0x7fffffff
#define maxn 10005
#define PI acos(-1.0)
#define seed 31//131,1313
typedef long long LL;
typedef unsigned long long ULL;
using namespace std;
const int N = 101010;
int next_a[N],extand_a[N],next_c[N],extand_c[N];
void getnext(char *T,int *next,int *extand) // next[i]: 以第i位置開始的子串 与 T的公共前缀
{int i,length = strlen(T);next[0] = length;for(i = 0; i<length-1 && T[i]==T[i+1]; i++);next[1] = i;int a = 1;for(int k = 2; k < length; k++){int p = a+next[a]-1, L = next[k-a];if( (k-1)+L >= p ){int j = (p-k+1)>0?

(p-k+1) : 0; while(k+j<length && T[k+j]==T[j]) j++;// 枚举(p+1,length) 与(p-k+1,length) 区间比較 next[k] = j, a = k; } else next[k] = L; } } void getextand(char *S,char *T,int *next,int *extand) //s是母串,t是模式串 { memset(next,0,sizeof(next)); getnext(T,next,extand); int Slen = strlen(S), Tlen = strlen(T), a = 0; int MinLen = Slen>Tlen?

Tlen:Slen; while(a<MinLen && S[a]==T[a]) a++; extand[0] = a, a = 0; for(int k = 1; k < Slen; k++) { int p = a+extand[a]-1, L = next[k-a]; if( (k-1)+L >= p ) { int j = (p-k+1)>0? (p-k+1) : 0; while(k+j<Slen && j<Tlen && S[k+j]==T[j] ) j++; extand[k] = j; a = k; } else extand[k] = L; } } char a[100005],b[100005],c[100005],d[100005]; LL t_a[100005],t_c[100005]; void init() { memset(t_a,0,sizeof(t_a)); memset(t_c,0,sizeof(t_c)); } int main() { //freopen("1.txt","r",stdin); int T; scanf("%d",&T); while(T--) { init(); scanf("%s",a); scanf("%s",b); int len_a=strlen(a); for(int i=0;i<len_a;i++) c[i]=a[len_a-1-i]; c[len_a]='\0'; int len_b=strlen(b); for(int i=0;i<len_b;i++) d[i]=b[len_b-1-i]; d[len_b]='\0'; getextand(a,b,next_a,extand_a); getextand(c,d,next_c,extand_c); for(int i=0;i<len_a;i++) { t_a[extand_a[i]]++; t_c[extand_c[i]]++; } for(int i=len_a-1;i>=1;i--) { t_a[i]+=t_a[i+1]; t_c[i]+=t_c[i+1]; } LL ans=0; for(int i=1;i<len_b;i++) { ans+=t_a[i]*t_c[len_b-i]; } printf("%lld\n",ans); } return 0; }



http://www.lbrq.cn/news/2722267.html

相关文章:

  • 嘉峪关做网站熊猫关键词挖掘工具
  • 汕头市政府门户网站官网网站怎么接广告
  • wordpress生成站点地图百度外推排名
  • html5做网页赣州seo培训
  • 网站禁止被采集西安seo搜推宝
  • 徐州企业做网站免费建立个人网站官网
  • seo短视频网页入口引流方案深圳外包seo
  • 做poster网站百度账户登录
  • 如何用dreamweaver做网站现在百度推广有用吗
  • 如何安装wordpress博客东莞seo网站排名优化
  • 网络服务提供者知道或者应当知道网络seo工程师
  • 怎么看网站是什么程序做的百度认证中心
  • 网站建设软件公司西安疫情最新情况
  • 网络推广营销策略关键词怎么优化
  • 支付宝网站登录入口关键词seo是什么
  • 基层机构网站建设seo搜索排名影响因素主要有
  • python 做网站怎样安徽seo优化规则
  • 做虚拟主机网站合肥网站建设程序
  • 企业网站规划2023搜索最多的关键词
  • 网站上如何做天气插件百度站长工具添加不了站点
  • 个人电脑做网站服务器教程seo好学吗
  • 外包公司做网站图片哪里整的品牌建设的五个要素
  • 营销型网站建设的特点表现刷赞网站推广ks
  • 建设网站的公司兴田德润怎么联系网络营销策略包括哪四种
  • 做图片视频的网站有哪些问题吗汕头seo
  • 聊城哪儿做网站便宜广州seo和网络推广
  • 佛山做网站公司排名seo分析报告
  • 一站式营销平台重庆 seo
  • 小说网站的图片长图怎么做的跨境电商怎么开店铺
  • 酒厂网站源码餐饮培训
  • Xget:为您的开发工作流解锁极致速度
  • redis-保姆级配置详解
  • Mac(一)常用的快捷键整理
  • C语言:指针(5)
  • GPT 解码策略全解析:从 Beam Search 到 Top-p 采样
  • 多任务并发:进程管理的核心奥秘