HDU5791--Two (DP)
题意:两个数列a,b,求相同的子序列有多少对,内容相同位置不同也算不同。
题解:dp[i][j]表示a数列前i个数个 b数列前j个数 有多少对
递推方程: dp[i][j] = dp[i-1][j-1]( a[i]和b[j]都不用 ) + ∑(k<i&&a[k]==b[j])dp[k-1][j-1] + ∑(k<=j&&a[i]==b[k])dp[i-1][k-1];
for (int i = ; i <= n; ++i) {
for (int j = ; j <= m; ++j) {
dp[i][j] = ;
for (int k = ; k < i; ++k)
if (a[k] == b[j]) dp[i][j] = (dp[i][j] + dp[k-][j-]) % MOD;
for (int k = ; k <= j; ++k)
if (a[i] == b[k]) dp[i][j] = (dp[i][j] + dp[i-][k-]) % MOD;
dp[i][j] = (dp[i][j] + dp[i-][j-]) % MOD;
}
}
O(n^3)会超时,所以在每一步多求一些辅助值,可以优化到O(n^2)。
我知道这种做法没问题,但是比赛的时候打死都调不出来,最后还是队友做的,心烦。
突然想到我的做法貌似很蠢……哎 不管了。。。反正过了。。。
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>
#include <queue>
#include <vector>
#include <cmath>
#define CLR(x, r) memset(x, r, sizeof (x))
#define PF(x) printf("debug:%d\n", x) using namespace std;
typedef long long ll; const int N = ;
const ll MOD = ;
int a[N], b[N];
ll dp[N][N];
ll ax[N];
ll bx[N]; int main(int argc, char const *argv[])
{
freopen("in", "r", stdin);
int n, m;
while (~scanf("%d%d", &n, &m)) {
for (int i = ; i <= n; ++i) scanf("%d", a+i);
for (int i = ; i <= m; ++i) scanf("%d", b+i); for (int i = ; i <= n; ++i) dp[i][] = ;
for (int i = ; i <= m; ++i) dp[][i] = ;
CLR(ax, );
for (int j = ; j <= m; ++j) {
if (b[j] == a[]) bx[j] = bx[j-] + dp[][j-];
else bx[j] = bx[j-];
}
for (int i = ; i <= n; ++i) {
int ant = a[i+];
for (int j = ; j <= m; ++j) {
dp[i][j] = ; dp[i][j] = (dp[i][j] + ax[j]) % MOD; // 用到 b[j]
dp[i][j] = (dp[i][j] + bx[j]) % MOD; // 用到 a[i]
dp[i][j] = (dp[i][j] + dp[i-][j-]) % MOD; if (b[j] == ant) {
bx[j] = (bx[j-] + dp[i][j-]) % MOD;
} else {
bx[j] = bx[j-];
} if (b[j] == a[i]) {
ax[j] = (ax[j] + dp[i-][j-]) % MOD;
} }
} cout << (dp[n][m] - + MOD) % MOD << endl;
}
return ;
}
HDU5791--Two (DP)的更多相关文章
- LightOJ 1033 Generating Palindromes(dp)
LightOJ 1033 Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- lightOJ 1047 Neighbor House (DP)
lightOJ 1047 Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...
- UVA11125 - Arrange Some Marbles(dp)
UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...
- Python基础-输入输出(IO)
Python基础-输入输出(IO) 程序会有输入和输出,输入可以从标准输入或是从一个文件读入数据,程序的输出可以以一种友好可读的方式(human-readable)打印出来,或是写进一个文件,而标准输 ...
- 【POJ 3071】 Football(DP)
[POJ 3071] Football(DP) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4350 Accepted ...
- 初探动态规划(DP)
学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...
- Tour(dp)
Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...
- 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)
.navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...
- 深入理解AngularJs-scope(二)
深入理解AngularJs-scope(一)中,我们对AngularJs的脏检测及其触发.异步任务队列进行了学习.紧接上一篇文章 深入理解AngularJs-scope(一),我们来看看scope对以 ...
- Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)
Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...
随机推荐
- 为你的PHP程序选择合适的密码库(初稿)
如果本文中的术语让你感到疑惑,请先参阅密码学术语及概念一文. 密码学不是魔术.加密一个应用程序并不能保证它在袭击下的安全(特别是在你没有设置验证密文的情况下).但如果出于商业需求你要确保程序的安全,传 ...
- OneAPM 云监控部署与试用体验
作为 Zabbix 骨灰级粉丝,一直以来对第三方监控(APM)都是拒绝的.一来觉得收费,二来担心数据被人所知,三来觉得 Zabbix 牛逼到无可取代.但是,随着 APM 市场的火爆,我决定「放下身段」 ...
- linux ubuntu卸载软件
1.通过deb包安装的情况: 安装.deb包: 代码:sudo dpkg -i package_file.deb反安装.deb包: 代码:sudo dpkg -r package_name 2.通过a ...
- 【BZOJ 1038】 1038: [ZJOI2008]瞭望塔
1038: [ZJOI2008]瞭望塔 Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们将H村抽象为一维的轮廓.如下图所示 ...
- POJ 1879 Tempus et mobilius Time and motion 队列和栈
很简单的队列和栈的应用,不过读明白题意非常重要:(直接引用白书的题解)三个轨道,一个库.分别是分钟单位的轨道,5min单位的轨道,一小时单位的轨道,还有就是n容量的库.每过一分钟,一个小球从库里面出来 ...
- IE Web 开发支持将迁移到 StackOverflow
http://stackoverflow.com/questions/tagged/internet-explorer
- Servlet 下载文件
这几天有点懒散,还好没有忘记看书,上周去了国家图书馆翻阅了一些和Java相关的书籍,其实这些书都是自己以前看过或者听过,按理来说,不应该看自己已经看过的书籍,应该找一些最新的书籍去看,但是每次走到书架 ...
- latex 写作
一.下载:http://www.ctex.org/CTeXDownload 二.bst文件的作用 在tex文件调用bib时,如 \bibliographystyle{Science} \bibliog ...
- iOS(Swift) TextField限制输入文本的长度(不是字数)
最近做项目有一个特殊需求,就是需要限制一个TextField的输入文本的长度在一定范围内(注意,不是字数),上网查了一圈没有找到类似文章,这里把我的方法写进来,mark一下: 1.对TextField ...
- 锋利的JQuery-Jquery中DOM操作
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...