~~数组名是TLE当然会TLE~~
by MC方块人 @ 2019-12-29 11:53:38
吸一下氧
by MC方块人 @ 2019-12-29 11:54:02
@[MC方块人](/user/199330) ~~难道我改成`WA`就会`WA`?~~
by Ryo_Yamada @ 2019-12-29 11:54:36
@[MC方块人](/user/199330) 吸过了,没用
by Ryo_Yamada @ 2019-12-29 11:54:51
@[breeze末影](/user/242543)
取模优化?
register?
刚交的不开O2不到1sAC
```cpp
#include<cstdio>
#include<cstring>
const int P=100000000,N=5009;
char a[N],b[N];
int F[N],G[N],U[N],V[N];
int main(){
register int n,m,i,j,*f=F,*g=G,*u=U,*v=V,*w;
scanf("%s%s",a+1,b+1),n=strlen(a+1)-1,m=strlen(b+1)-1;
for(j=0;j<=m;++j)u[j]=1;
v[0]=1;
for(i=1;i<=n;++i){
w=u,u=v,v=w,w=f,f=g,g=w;
for(j=1;j<=m;++j){
f[j]=g[j]>f[j-1]?g[j]:f[j-1],u[j]=0;
if(a[i]==b[j]&&f[j]<=g[j-1]+1)f[j]=g[j-1]+1,u[j]+=v[j-1];
if(f[j]==g[j])u[j]+=v[j];
if(f[j]==f[j-1])u[j]+=u[j-1];
if(a[i]!=b[j]&&f[j]==g[j-1])u[j]+=P-v[j-1];
while(u[j]>=P)u[j]-=P;
}
}
printf("%d\n%d",f[m],u[m]);
return 0;
}
```
by panyf @ 2019-12-29 12:06:37
@[breeze末影](/user/242543) 滚动数组重载[]将i%2改成i&1,或者像我一样用指针交换滚动数组
by panyf @ 2019-12-29 12:07:40
@[AK新手村](/user/221955) 好的,我试试
by Ryo_Yamada @ 2019-12-29 14:16:19