码迷,mamicode.com
首页 > 其他好文 > 详细

PAT 甲级 1045 Favorite Color Stripe(DP)

时间:2017-07-17 23:50:35      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:cpp   amp   ++   typedef   efi   一个   int   space   class   

题目链接 Favorite Color Stripe

题意:给定A序列和B序列,你需要在B序列中找出任意一个最长的子序列,使得这个子序列也是A的子序列

(这个子序列的相邻元素可以重复)

只要求出这个子序列长度的最大值即可

很基础的DP题,设f[i]为当前以a[i]结尾的子序列的长度的最大值,扫描B序列的每个元素时实时更新即可。

 

#include <bits/stdc++.h>

using namespace std;

#define rep(i, a, b)	for (int i(a); i <= (b); ++i)
#define dec(i, a, b)	for (int i(a); i >= (b); --i)

typedef long long LL;

const int L = 10010;
const int N = 210;

int a[L], c[N], f[N];
vector <int> v[N];
int n, m, l;
int ans;

int main(){


	scanf("%d%d", &n, &m);
	rep(i, 1, m){
		scanf("%d", c + i);
		v[c[i]].push_back(i);
	}

	scanf("%d", &l);
	rep(i, 1, l) scanf("%d", a + i);

	rep(i, 1, l){
		for (auto u : v[a[i]]){
			if (f[u]) ++f[u];
			rep(j, 0, u - 1) f[u] = max(f[u], f[j] + 1);

		}
	}

	rep(i, 1, m) ans = max(ans, f[i]);
	return 0 * printf("%d\n", ans);
}

 

PAT 甲级 1045 Favorite Color Stripe(DP)

标签:cpp   amp   ++   typedef   efi   一个   int   space   class   

原文地址:http://www.cnblogs.com/cxhscst2/p/7197822.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!