dp
题意
一个序列a1,a2,a3…被称为“wavel”,当且仅当a1
a3 a2<a6…
给定序列a1,a2,a3…an和序列b1,b2,b3…bm,有多少序列是“wavel”且为a和b的子序列.
- 1<=n,m<=2000
题解
- dp[i][j][k]表示a序列的第i个数和b序列的第j个数为当前序列的最后一个数,且为波峰/波谷的方案数,k为0表示波谷,k为1表示波峰。
- 继续优化,s[i][j][k]表示序列的最后一个数为b[j],在a序列中最后一个数下标为1~i-1的dp[i][j][k]的和。
- 那么在固定i,从小到大枚举j的过程中,由a[i]即可知道当前b[j]应该取什么值,然后就能得到答案。
- 复杂度O(n^2)。
代码
|
|