AcWing 3713. 不同的子序列
原题链接
中等
作者:
最后五分钟
,
2024-11-12 16:35:09
,
所有人可见
,
阅读 4
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e4+10;
const int mod=1000000007;
int f[N];
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int q;
cin>>q;
while(q--)
{
memset(f,0,sizeof f);
string a,b;
cin>>a>>b;
vector<int> st[30];
int n=a.size(),m=b.size();
a=" "+a,b=" "+b;
for(int i=m;i>=1;i--)
{
st[b[i]-'a'].push_back(i);
}
f[0]=1;
for(int i=1;i<=n;i++)
for(auto j:st[a[i]-'a'])
{
f[j]=(f[j]+f[j-1])%mod;
}
cout<<f[m]<<endl;
}
return 0;
}