LCIS

LCIS

https://ac.nowcoder.com/acm/problem/51152

图片说明

思路:

表示可以构成以为结尾的的长度。
时,
时,,显然需要满足,因为是以为结尾的。
最后枚举为结尾的的长度,找最大的。

MyCode:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int maxn=1e5+7,maxm=2e5+7,mod=1e9+7;
typedef long long int ll;
typedef unsigned long long ull;
int a[3005],b[3005],f[3005][3005];
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin>>n;
    for(int i=1;i<=n;++i) cin>>a[i];
    for(int i=1;i<=n;++i) cin>>b[i];
    for(int i=1;i<=n;++i) {
        int val(0);
        for(int j=1;j<=n;++j) {
            if(a[i]==b[j]) f[i][j]=val+1;
            else f[i][j]=f[i-1][j];
            if(b[j]<a[i]) val=max(val,f[i-1][j]);
        }
    }
    int ans(0);
    for(int i=1;i<=n;++i) ans=max(ans,f[n][i]);
    cout<<ans<<'\n';
    return 0;
}
动态规划入门 文章被收录于专栏

能采用动态规划求解一般要具有3个性质: (1) 最优化原理:如果问题的最优解所包含的子问题的解也是最优的,就称该问题具有最优子结构,即满足最优化原理。 (2) 无后效性:即某阶段状态一旦确定,就不受这个状态以后决策的影响。也就是说,某状态以后的过程不会影响以前的状态,只与当前状态有关。 (3)有重叠子问题:即子问题之间是不独立的,一个子问题在下一阶段决策中可能被多次使用到。(体现DP的优点)

全部评论

相关推荐

牛客59349152...:没有让你做出个前后端页面,然后又不要你就知足了吧😂
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-21 11:29
凉风落木楚山秋:他们两都收获了流量,只有爷浪费了时间
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务