我是靠谱客的博主 真实鲜花,最近开发中收集的这篇文章主要介绍Codeforces 255C,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题意略。

本题考查动态规划,顺便考查一下优化。

这个题目可以归约到最长递增子序列那一类,定义状态:dp[i][j] --- 当前以第i个数结尾,前一个数是第j个数的最长序列。

if(a[i] == a[k]) dp[i][j] = dp[j][k] + 1;

这里不用再去枚举k了,因为从小到大枚举j时可以顺便寻找k。

#include<bits/stdc++.h>
#define maxn 4050
#define maxn2 1000005
using namespace std;
int dp[maxn][maxn],store[maxn];
int maxx[maxn2];
int main(){
int n,ans = 0;
scanf("%d",&n);
for(int i = 1;i <= n;++i){
scanf("%d",&store[i]);
}
dp[0][0] = 1;
for(int i = 1;i <= n;++i){
int k = -1;
for(int j = 0;j < i;++j){
if(k == -1){
if(j > 0) dp[i][j] = 2;
else dp[i][j] = 1;
}
else{
dp[i][j] = max(dp[i][j],dp[j][k] + 1);
}
if(j > 0 && store[i] == store[j]) k = j;
ans = max(ans,dp[i][j]);
}
}
printf("%dn",ans);
return 0;
}
/*
10
1 3 2 4 5 2 6 2 5 6
*/

 

转载于:https://www.cnblogs.com/tiberius/p/8489070.html

最后

以上就是真实鲜花为你收集整理的Codeforces 255C的全部内容,希望文章能够帮你解决Codeforces 255C所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部