#include <cstdio>
#include <cstring>
using namespace std;
typedef long long LL;
const int maxn=2e3+5;
const int mod=998244353;
int a[maxn],b[maxn];
LL cnt0,cnt1;
LL dp[maxn][2];
int n,m;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int i=0;i<m;i++)
{
scanf("%d",&b[i]);
}
LL ans=0;
memset(dp,0,sizeof(dp));
for(int i=0;i<n;i++)
{
LL cnt0=1,cnt1=0;
for(int j=0;j<m;j++)
{
if(a[i]==b[j])
{
dp[j][0]=(dp[j][0]+cnt0)%mod;
dp[j][1]=(dp[j][1]+cnt1)%mod;
ans=(ans+cnt0+cnt1)%mod;
}
else if(a[i]>b[j])
{
cnt1=(cnt1+dp[j][0])%mod;
}
else
{
cnt0=(cnt0+dp[j][1])%mod;
}
}
}
printf("%I64d\n",ans);
}
return 0;
}
HDU6078 Wavel Sequence(计数dp)
最新推荐文章于 2018-09-27 08:47:37 发布