zoukankan      html  css  js  c++  java
  • POJ_2533 Longest Ordered Subsequence 【LIS】

    一、题目

      Longest Ordered Subsequence

    二、分析

      动态规划里的经典问题。重在DP思维。

      如果用最原始的DP思想做,状态转移方程为$DP[i] = max(DP[j] + 1)$,$j$满足$j<i$,且$a[i]>a[j]$。

    三、AC代码

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 #include <algorithm>
     5 #include <vector>
     6 #include <cmath>
     7 
     8 using namespace std;
     9 #define ll long long
    10 #define Min(a,b) ((a)>(b)?(b):(a))
    11 #define Max(a,b) ((a)>(b)?(a):(b))
    12 const int MAXN = 1000;
    13 int A[MAXN + 13], Len;
    14 
    15 int main()
    16 {
    17     int N;
    18     while(scanf("%d", &N) != EOF) {
    19         int data;
    20         Len = 0;
    21         for(int i = 0; i < N; i++) {
    22             scanf("%d", &data);
    23             if(!Len)
    24                 A[Len++] = data;
    25             else {
    26                 int p = lower_bound(A, A + Len, data) - A;
    27                 if(p == Len)
    28                     Len++;
    29                 A[p] = data;
    30             }
    31         }
    32         printf("%d
    ", Len);
    33     }
    34     return 0;
    35 }
  • 相关阅读:
    nginx原理及常用配置
    课程作业03-1
    Java动手动脑02
    Java课程作业02
    java课堂测试2
    Java验证码程序
    课程作业02-2
    课程作业02-1
    课程作业01
    《大道至简》第一章伪代码
  • 原文地址:https://www.cnblogs.com/dybala21/p/11417138.html
Copyright © 2011-2022 走看看