自己简直是傻死了。。。对于位置想错了。。。


二分出来的是LCP长度$+1$,即每一次二分出来的最后一个点都是失配的,而就算失配也会跳过这个点;所以当$k<=3$且模式串$s2$的指针$>len2$时,即跳过了$<=3$个点的位置且指针$>len2$时,都是可行的;当$k==4$且模式串$s2$指针$>len2+1$时,即跳过了$<=4$个点的位置$>len2+1$时,是可行的。注意到时$len2+1$,原因是多失配了一个四号点。

然后一晚上又过去了$qwq$

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cctype>
#include<cstdlib>
#include<vector>
#include<queue>
#include<map>
#include<set>
#define ll unsigned long long
#define R register int
using namespace std;
namespace Fread {
//static char B[1<<15],*S=B,*D=B;
//#define getchar() (S==D&&(D=(S=B)+fread(B,1,1<<15,stdin),S==D)?EOF:*S++)
inline int g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
}
}using Fread::g;
const int N=,B=;
ll h1[N],h2[N],p[N]; int n,l1,l2,t;
char s1[N],s2[N];
inline ll H1(int l,int r) {return h1[r]-h1[l-]*p[r-l+];}
inline ll H2(int l,int r) {return h2[r]-h2[l-]*p[r-l+];}
inline int ck(int x) {
R i=x,j=; R l=,r=l2+;
for(R k=;k<=;++k) {
while(l<r) { R md=l+r>>;
if(H1(i,i+md-)==H2(j,j+md-)) l=md+; else r=md;
} i+=l,j+=l;
l=,r=l2-j+;
if(k==) {if(j->=l2) return ;}
else if(j->=l2) return ;
} return ;
}
signed main() {
#ifdef JACK
freopen("NOIPAK++.in","r",stdin);
#endif
p[]=; for(R i=;i<=N-;++i) p[i]=p[i-]*B;
t=g(); while(t--) { R ans=;
scanf("%s%s",s1+,s2+); l1=strlen(s1+),l2=strlen(s2+);
if(l1<l2) {printf("0\n"); continue;}
for(R i=;i<=l1;++i) h1[i]=h1[i-]*B+s1[i];
for(R i=;i<=l2;++i) h2[i]=h2[i-]*B+s2[i];
for(R i=;i<=l1-l2+;++i) ans+=ck(i); printf("%d\n",ans);
}

2019.06.10\11

最新文章

  1. Vagrant入门
  2. mysql与oracle的日期/时间函数小结
  3. 【转】Git图形化界面客户端大汇总
  4. 【学】SoapExtension 学习
  5. Oracle数据库——基本操作
  6. jQuery制作视频网站的展示效果
  7. ipython and bpython
  8. [Redux] Extracting Action Creators
  9. Chapter 1 First Sight——7
  10. memcached预热失败
  11. hive中No space left on device问题或者Java HotSpot(TM)64-Bit Server VM warning:Insufficient space for shared memory
  12. Web Deploy配置及其使用VS进行Web部署
  13. mysql语句实战
  14. Spark 核心篇-SparkEnv
  15. lnmp 基础设置
  16. 函数和常用模块【day06】:logging模块(八)
  17. Lucene学习——IKAnalyzer中文分词
  18. git rebase 过程中遇到冲突该怎么解决?
  19. PHP中implode()和explode()
  20. sql中left join on where区别剖析

热门文章

  1. poj3585 Accumulation Degree[树形DP换根]
  2. .NET接入微信支付(一)JS API接入 V3
  3. js之翻牌游戏中的一个深刻感悟
  4. centos7 中文乱码解决方法
  5. oracle--pl/sql变量定义----
  6. Redis IRedisTypedClient
  7. AjaxMethod的使用
  8. 使用showMessageDialog显示消息框
  9. 树莓派 Learning 002 装机后的必要操作 --- 00 修改键盘布局
  10. hadoop-maven项目打包成可执行的jar