/*
HDU 6078 - Wavel Sequence [ DP ] | 2017 Multi-University Training Contest 4
题意:
给定 a[N], b[M]
要求满足
a[f(1)]<a[f(2)]>a[f(3)]<a[f(4)]>a[f(5)]<a[f(6)]...
b[g(i)] == a[f(i)]
f(i) < f(i+1), g(i) < g(i+1)
的子序列 的数目
分析:
dp[i][j][0] 表示 以a[i], b[j]结尾的且为波谷的情况总和,dp[i][j][1] 为波峰
对于某个 i,j满足 a[i] == b[j]
dp[i][j][0] = sum(dp[x][y][1]), x < i && y < j && b[y] > a[i]
设 sum[i-1][y][1] = ∑dp[x][y][1] , x <= i-1
则 dp[i][j][0] = ∑ sum[i-1][y][1], b[y] > a[i]
对于每一个 b[j], sum[i][j] 累计了前i个的a[i]的影响,求出每次dp[i][j]后O(1)更新即可
即 sum[i][j][1] = sum[i-1][j][1] + dp[i][j][1] 然后对于某一个a[i]的所有b[j],可以以前缀和的形式,利用sum[i-1][y],O(n)全部更新
所以复杂度O(n^2)
*/
#include <bits/stdc++.h>
using namespace std;
const int MOD = 998244353;
const int N = 2005;
int t, n, m;
int a[N], b[N];
int dp[N][2];
int sum[N][2];
int main()
{
scanf("%d", &t);
while (t--)
{
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
for (int i = 1; i <= m; i++) scanf("%d", &b[i]);
memset(sum, 0, sizeof(sum));
long long ans = 0;
for (int i = 1; i <= n; i++)
{
int cnt0 = 0, cnt1 = 0;
for (int j = 1; j <= m; j++)
{
if (a[i] == b[j])
{
dp[j][0] = cnt1 + 1;
dp[j][1] = cnt0;
ans = (ans + cnt1+cnt0+1) % MOD;
}
else if (b[j] > a[i])
cnt1 = (cnt1+ sum[j][1]) % MOD;
else
cnt0 = (cnt0+ sum[j][0]) % MOD;
}
for (int j = 1; j <= m; j++)
if (a[i] == b[j])
{
sum[j][0] = (sum[j][0] + dp[j][0]) % MOD;
sum[j][1] = (sum[j][1] + dp[j][1]) % MOD;
}
}
printf("%lld\n", ans);
}
}

  

最新文章

  1. MVC第二天
  2. Windows程序----初识Windows程序
  3. HTTP 笔记与总结(3 )socket 编程:发送 GET 请求
  4. Python 字典(Dictionary)
  5. apache中若干模块的安装
  6. 开启或关闭SQLSERVER服务的bat文件
  7. cp命令的编写——浅谈系统调用
  8. 开发快很重要——如果只看法语或者产品结果C++似乎很强大,但是参与这个C++的开发过程,就会感觉到这种痛苦(Google也是这个看法)
  9. 初学者入门web前端 C#基础知识:数组与集合
  10. svn up出现类似svn: Error converting entry in directory &#39;.&#39; to UTF-8问题解决
  11. 在线安装eclipse中html/jsp/xml editor插件(很可靠)
  12. 一步一步从原理跟我学邮件收取及发送 3.telnet命令行发一封信
  13. Tomcat集群应用部署的实现机制
  14. BZOJ_3282_Tree_LCT
  15. 关于gcd的四道题
  16. 前端-JavaScript2-1——JavaScript基础复习及上次作业答案
  17. CVE-2017-8912 CMS Made Simple命令执行
  18. .Net MVC 当前上下文中不存在名称“Style”
  19. robot framework教程-------虫师
  20. 最全的MonkeyRunner自动化测试从入门到精通(2)

热门文章

  1. c# 金钱大写转小写工具类
  2. select key from table 一直出错
  3. Laravel入门
  4. vue开发环境配置跨域,一步到位
  5. 【第一季】CH09_FPGA多路分频器设计
  6. glang flag
  7. HTTP协议探究(二):代理、网关和隧道
  8. Java浅拷贝与深拷贝(思维导图)
  9. tinymce富文本是在modal框中弹出显示的问题
  10. JavaScript基本使用