(2017多校训练第四场)HDU - 6078 Wavel Sequence dp
传送门:点击打开链接
定义状态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相关推荐
- 2017多校第4场 HDU 6078 Wavel Sequence DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6078 题意:求两个序列的公共波形子序列的个数. 解法: 类似于最长公共上升子序列,对于每个i,只考虑存 ...
- 2019暑假多校训练第四场 | 部分题解
有一道题目是原题emmm 朝鲜友人出的题目 可能英文题面会有些小问题 反正这场 我的贡献率≈0 题解链接: https://pan.baidu.com/s/1KRpqHaOdq2EL2-Kgbm2EX ...
- 2019牛客网暑假多校训练第四场 K —number
链接:https://ac.nowcoder.com/acm/contest/884/K 来源:牛客网 题目描述 300iq loves numbers who are multiple of 300 ...
- 2019牛客暑假多校训练 第四场 triples I 按位或运算
链接:https://ac.nowcoder.com/acm/contest/884/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- hdu 6078 Wavel Sequence
题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6078 (2017 Multi-University Training Contest - Team ...
- HDU 6078 Wavel Sequence【动态规划】
题目来戳呀 Problem Description Have you ever seen the wave? It's a wonderful view of nature. Little Q is ...
- HDU 6078 Wavel Sequence
Wavel Sequence Problem Description Have you ever seen the wave? It's a wonderful view of nature. Lit ...
- 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 ...
- HDU - 6078 Wavel Sequence(动态规划+时间优化)
代码: #include<bits/stdc++.h> #define MOD 998244353 using namespace std; #define MAXN 2050int dp ...
最新文章
- TensorFlow 运行官方文档中文版 简单例子出现:IndentationError:unexpected indent
- removeAllViews()和removeAllViewsInLayout()之间的区别?
- win10安装misql8_Win10安装MySQL8压缩包版的教程
- mysql 列合并_mysql 列转行,合并字段的方法(必看)
- 来自官方文档的Ubuntu 16.04 + tensorflow-GPU 配置
- ASP.NET页面之间传值Session(2)
- oracle 12c 性能,Oracle 12C 新性能 总结篇
- Python创建空DataFrame及添加行数据
- 华为交换机导入配置_华为交换机配置文件导入 华为s5700交换机配置教程
- 拖动滑块css,基于JavaScript实现拖动滑块效果
- matlab pt站下载,SDPT3-4.0 求解最优化问题里的半定规 (SDP)经典并且十分有效的MATLAB程序包 244万源代码下载- www.pudn.com...
- postman 定时任务
- 《学习网站》计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
- pdf照片显示正常打印时被翻转_现场确认完没事了?准考证打印要注意哪些细节!...
- 武大计算机导师蔡贤涛,CAD模型在线集成与离线集成关键技术研究
- 若依 数据权限图文详细理解及改造
- 《浪潮之巅》作者吴军万字长文:中国算力的危与机
- jdk1.8中HashMap扰动函数及数组长度为什么是2的n次方介绍
- 给aws的root账户新建密码
- JavaOne 2015继续,Java将永远存在(……也许是长篇大论)
热门文章
- 基于微信小程序的网上订餐系统 报告+任务书+开题报告+文献综述+中期PPT+外文翻译及原文+PPT+项目源码及数据库文件
- 字体图标iconfont的使用
- java 运行一个程序的全部过程
- ZT——你怎么过河? -在CMM实践中你是否愿意多走1公里-软件工程 CMM与过程改进
- 腾讯职场等级(转载自网络)
- L3 Sequence
- 无线移动通信技术快速发展历程和趋向
- 智慧水务大数据平台-智慧水务建设方案
- 4.vim高级用法配置
- 嵌入式设备开发专题《NB-IoT开发,解读SIM卡、USIM卡、UICC卡、eSIM卡的区别》