zoukankan      html  css  js  c++  java
  • [POJ2533]Longest Ordered Subsequence<dp>

    题目链接:http://poj.org/problem?id=2533

    描述:

    A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the given numeric sequence (a1a2, ..., aN) be any sequence (ai1ai2, ..., aiK), where 1 <= i1 < i2 < ... < iK <= N. For example, sequence (1, 7, 3, 5, 9, 4, 8) has ordered subsequences, e. g., (1, 7), (3, 4, 8) and many others. All longest ordered subsequences are of length 4, e. g., (1, 3, 5, 8).
    Your program, when given the numeric sequence, must find the length of its longest ordered subsequence.

    翻译:

    找一串数字最长上升子序列的数字个数。(手动狗头)

    没有难度的一个dp题,范围不算大,最普通的方法就可以过了

    想优化看到了其他博主说的二分,不过我没有用

    等复习到二分再来试试吧

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    
    int read(){
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    
    int n,a[10005],dp[10005],ans;
    
    int main(){
        n=read();
        for(int i=1;i<=n;i++)
            a[i]=read();
        for(int i=2;i<=n;i++)
            for(int j=1;j<i;j++)
                if(a[i]>a[j])dp[i]=max(dp[i],dp[j]+1);
        for(int i=1;i<=n;i++)
            ans=max(ans,dp[i]);
        cout<<ans+1;
        return 0;
    }
    View Code
  • 相关阅读:
    模板模式创建一个poi导出功能
    vim python和golang开发环境配置
    vim快捷键
    golang聊天室
    goroutine与channels
    Redis中的GETBIT和SETBIT(转载)
    二叉树
    满二叉树与完全二叉树
    拓扑排序
    ZigZag Conversion
  • 原文地址:https://www.cnblogs.com/Danzel-Aria233/p/12292430.html
Copyright © 2011-2022 走看看