码迷,mamicode.com
首页 > 其他好文 > 详细

The Heaviest Non-decreasing Subsequence Problem

时间:2017-09-25 11:59:12      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:names   logs   ios   []   log   ems   大于   amp   等于   

最长非递减子序列变形题,把大于等于10000的copy五次放回去就可以了

ac代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
#define LL long long
const LL N=200105;
int a[N];
int dp[N];
int LIS(int a[],int len)
{
    int dlen=1;
    memset(dp,0,sizeof(dp));
    dp[0]=a[0];//
    for(int i=1;i<len;i++)
    {
        if(a[i] < dp[0]) // 最开始的位置
        {
            dp[0]=a[i];
            continue;
        }
        if(a[i] >= dp[dlen-1])
        {
            dp[dlen++]=a[i];// new insert
        }
        else
        {
            int pos=upper_bound(dp,dp+dlen,a[i])-dp;//
            dp[pos]=a[i];
        }
    }
    return dlen;
}
int main()
{
    int len=0;
    int x;
    while(~scanf("%d",&x))
    {
        if(x<0) continue;
        if(x>=10000)
        {
            x-=10000;
            for(int i=1;i<=5;i++) a[len++]=x;
        }
        else a[len++]=x;
    }
    /*
    for(int i=1;i<=14;i++)
    {
        scanf("%d",&x);
        if(x<0) continue;
        if(x>=10000)
        {
            x-=10000;
            for(int i=1;i<=5;i++) a[len++]=x;
        }
        else a[len++]=x;
    }
    */
  //  for(int i=1;i<=len;i++) cout<<a[i]<<‘ ‘;
  //  cout<<endl;
    cout<<LIS(a,len)<<endl;
    return 0;
}

 

The Heaviest Non-decreasing Subsequence Problem

标签:names   logs   ios   []   log   ems   大于   amp   等于   

原文地址:http://www.cnblogs.com/z1141000271/p/7590491.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!