zoukankan      html  css  js  c++  java
  • hdoj1087 (DP--LIS)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087

    思路:这题很简单了,纯LIS的解法,没有一点变形,由于数据小,使用O(n^2)LIS解法就足够了,另外由于长度最长的上升子序列不一定有最大的score,故LIS的O(nlogn)最优算法不能使用,关于LIS可以参考我的另一篇随笔:https://www.cnblogs.com/FrankChen831X/p/10384238.html。

    AC代码如下:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 int n,res,a[1005],f[1005];
     5 
     6 int main(){
     7     while(scanf("%d",&n)!=EOF&&n){
     8         res=0;
     9         for(int i=0;i<n;i++)
    10             scanf("%d",&a[i]),f[i]=a[i];
    11         for(int i=0;i<n;i++){
    12             for(int j=0;j<i;j++)
    13                 if(a[j]<a[i])
    14                     f[i]=max(f[i],f[j]+a[i]);
    15             if(f[i]>res) res=f[i];
    16         }
    17         printf("%d
    ",res);
    18     }
    19     return 0;
    20 }
  • 相关阅读:
    单调栈
    单调队列
    线段树
    树状数组
    KMP模式匹配
    二分图最大匹配
    celery发送短信接口
    celery配置与基本使用
    celery介绍
    短信验证接口
  • 原文地址:https://www.cnblogs.com/FrankChen831X/p/10390302.html
Copyright © 2011-2022 走看看