传送门:点击打开链接

定义状态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(nm)。

代码如下:

#include <bits/stdc++.h>using namespace std;
typedef long long int LL;
const int MOD = 998244353;
const int N = 2005;
int a[N], n;
int b[N], m;
int dp[N][2];
int sum[N][2];int main()
{//freopen("test.txt", "r", stdin);//freopen("out.txt", "w", stdout);cin.sync_with_stdio(false);int T;cin >> T;while (T--){cin >> n >> m;for (int i = 1; i <= n; i++)cin >> a[i];for (int i = 1; i <= m; i++)cin >> b[i];memset(dp, 0, sizeof(dp));memset(sum, 0, sizeof(sum));LL ans = 0;for (int i = 1; i <= n; i++){int cnt1 = 0;int cnt0 = 0;for (int j = 1; j <= m; j++){if (a[i] == b[j]){dp[j][0] = cnt1 + 1; // 因为波谷可以作为开头,所以自身算一种。dp[j][1] = cnt0;ans = (ans + cnt0 + cnt1 + 1) % MOD;}else if (b[j] > a[i])cnt1 = (cnt1 + sum[j][1]) % MOD;elsecnt0 = (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;}}cout << ans << endl;}return 0;
}

(2017多校训练第四场)HDU - 6078 Wavel Sequence dp相关推荐

  1. 2017多校第4场 HDU 6078 Wavel Sequence DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6078 题意:求两个序列的公共波形子序列的个数. 解法: 类似于最长公共上升子序列,对于每个i,只考虑存 ...

  2. 2019暑假多校训练第四场 | 部分题解

    有一道题目是原题emmm 朝鲜友人出的题目 可能英文题面会有些小问题 反正这场 我的贡献率≈0 题解链接: https://pan.baidu.com/s/1KRpqHaOdq2EL2-Kgbm2EX ...

  3. 2019牛客网暑假多校训练第四场 K —number

    链接:https://ac.nowcoder.com/acm/contest/884/K 来源:牛客网 题目描述 300iq loves numbers who are multiple of 300 ...

  4. 2019牛客暑假多校训练 第四场 triples I 按位或运算

    链接:https://ac.nowcoder.com/acm/contest/884/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  5. hdu 6078 Wavel Sequence

    题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6078 (2017 Multi-University Training Contest - Team ...

  6. HDU 6078 Wavel Sequence【动态规划】

    题目来戳呀 Problem Description Have you ever seen the wave? It's a wonderful view of nature. Little Q is ...

  7. HDU 6078 Wavel Sequence

    Wavel Sequence Problem Description Have you ever seen the wave? It's a wonderful view of nature. Lit ...

  8. HDU 6078 Wavel Sequence (dp)

    Description Have you ever seen the wave? It's a wonderful view of nature. Little Q is attracted to s ...

  9. HDU - 6078 Wavel Sequence(动态规划+时间优化)

    代码: #include<bits/stdc++.h> #define MOD 998244353 using namespace std; #define MAXN 2050int dp ...

最新文章

  1. TensorFlow 运行官方文档中文版 简单例子出现:IndentationError:unexpected indent
  2. removeAllViews()和removeAllViewsInLayout()之间的区别?
  3. win10安装misql8_Win10安装MySQL8压缩包版的教程
  4. mysql 列合并_mysql 列转行,合并字段的方法(必看)
  5. 来自官方文档的Ubuntu 16.04 + tensorflow-GPU 配置
  6. ASP.NET页面之间传值Session(2)
  7. oracle 12c 性能,Oracle 12C 新性能 总结篇
  8. Python创建空DataFrame及添加行数据
  9. 华为交换机导入配置_华为交换机配置文件导入 华为s5700交换机配置教程
  10. 拖动滑块css,基于JavaScript实现拖动滑块效果
  11. matlab pt站下载,SDPT3-4.0 求解最优化问题里的半定规 (SDP)经典并且十分有效的MATLAB程序包 244万源代码下载- www.pudn.com...
  12. postman 定时任务
  13. 《学习网站》计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
  14. pdf照片显示正常打印时被翻转_现场确认完没事了?准考证打印要注意哪些细节!...
  15. 武大计算机导师蔡贤涛,CAD模型在线集成与离线集成关键技术研究
  16. 若依 数据权限图文详细理解及改造
  17. 《浪潮之巅》作者吴军万字长文:中国算力的危与机
  18. jdk1.8中HashMap扰动函数及数组长度为什么是2的n次方介绍
  19. 给aws的root账户新建密码
  20. JavaOne 2015继续,Java将永远存在(……也许是长篇大论)

热门文章

  1. 基于微信小程序的网上订餐系统 报告+任务书+开题报告+文献综述+中期PPT+外文翻译及原文+PPT+项目源码及数据库文件
  2. 字体图标iconfont的使用
  3. java 运行一个程序的全部过程
  4. ZT——你怎么过河? -在CMM实践中你是否愿意多走1公里-软件工程 CMM与过程改进
  5. 腾讯职场等级(转载自网络)
  6. L3 Sequence
  7. 无线移动通信技术快速发展历程和趋向
  8. 智慧水务大数据平台-智慧水务建设方案
  9. 4.vim高级用法配置
  10. 嵌入式设备开发专题《NB-IoT开发,解读SIM卡、USIM卡、UICC卡、eSIM卡的区别》