一个长度为n的序列,删除任意长度为l的连续子序列后,求剩下的序列的最长公共子序列。

先求出以第i个元素为开始的LIS的长度,再一次循环,对所要求的结果更新

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cstdlib>
#include<queue>
#include<vector>
#include<algorithm>
const int INF = 0x3F3F3F3F;
using namespace std;
typedef long long LL;
const int N = ;
int a[N];
int lis[N], dp[N]; int main(){
    int n, l;
    int t;
    cin>>t;
    for(int t1 = ; t1 <= t; t1++){
        scanf("%d %d",&n, &l);
        for(int i = ; i < n; i++){
            scanf("%d", &a[i]);
        }
        a[n] = INF;
        int pos =  , len = ;
        lis[n] = ;
        lis[n - ] = ;
        dp[] = -a[n - ];
        for(int i = n - ; i >= ; i--){
            pos = lower_bound(dp, dp + len, -a[i]) - dp;
            dp[pos] = -a[i];
            if(pos == len){
                len++;
            }
            lis[i] = pos + ;
        }
        int ans = lis[l];
        len = ;
        dp[] = a[];
        for(int i = , j = l; j < n; i++, j++){
            int tp = lis[j + ];
            pos = lower_bound(dp, dp + len, a[j + ]) - dp;
            tp += pos;
            ans = max(ans, tp);             pos = lower_bound(dp, dp + len, a[i]) - dp;
            dp[pos] = a[i];
            if(pos == len){
                len++;
            }
    }     printf("Case #%d: %d\n", t1, ans);
    }
    return ;

}

HDU5489 Removed Interval(动态规划)的更多相关文章

  1. hdu5489 Removed Interval

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission ...

  2. Hdu 5489 合肥网络赛 1009 Removed Interval

    跳跃式LIS(nlogn),在普通的转移基础上增加一种可以跨越一段距离的转移,用一颗新的树状数组维护,同时,我们还要维护跨越完一次后面的转移,所以我用了3颗树状数组.. 比赛的时候一句话位置写错了,然 ...

  3. hdu 5489——Removed Interval——————【删除一段区间后的LIS】

    Removed Interval Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  4. 2015合肥网络赛 HDU 5489 Removed Interval LIS+线段树(树状数组)

    HDU 5489 Removed Interval 题意: 求序列中切掉连续的L长度后的最长上升序列 思路: 从前到后求一遍LIS,从后往前求一遍LDS,然后枚举切开的位置i,用线段树维护区间最大值, ...

  5. HDU 5489 Removed Interval (LIS变形)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5489 给你n个数,要删去其中连续的L个,问你删去之后的LIS最大是多少? 我们先预处理出以i下标为开头 ...

  6. HDU 5489 Removed Interval

    题意:求一段序列中删掉L个连续元素后的LIS. 解法:我的想法很复杂= =怎么说呢……首先用nlogn的方法求LIS得到的序列dp的第i项的意义为上升子序列所有长度为i的序列结尾元素的最小值,那么先倒 ...

  7. 【二分】【最长上升子序列】HDU 5489 Removed Interval (2015 ACM/ICPC Asia Regional Hefei Online)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5489 题目大意: 一个N(N<=100000)个数的序列,要从中去掉相邻的L个数(去掉整个区间 ...

  8. HDU 5489 Removed Interval (LIS,变形)

    题意: 给出一个n个元素的序列,要求从中删除任一段长度为L的连续子序列,问删除后的LIS是多少?(n<=10w, L<=n ,元素可能为负) 思路: 如果会O(nlogn)求普通LIS的算 ...

  9. HDU 5489 Removed Interval 2015 ACM/ICPC Asia Regional Hefei Online (LIS变形)

    定义f[i]表示以i为开头往后的最长上升子序列,d[i]表示以i为结尾的最长上升子序列. 先nlogn算出f[i], 从i-L开始枚举f[i],表示假设i在最终的LIS中,往[0,i-L)里找到满足a ...

随机推荐

  1. php上传文件大小限制修改

    打开php.ini 1.最大上传文件大小: upload_max_filesize=2M 改成自己需要的大小 2.最大post大小: post_max_size=2M 改成自己需要的大小,第二个一般比 ...

  2. vtigerCRM5.4的安装和汉化 ubuntu

    由于php5.5经过较大改变,安装vtigercrm的时候可能需要修改一些配置 1.去官网下载vtiger5.4压缩包,解压后放在/var/www目录下 2.简单起见,将目录权限设置为777 vtig ...

  3. cocoapods for xcode怎么用

    一.概要 iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库. 二.安装 由于 ...

  4. 【GoLang】golang runtime 调度原理

    参考资料: http://m.yl1001.com/group_article/3231471449287668.htm http://tieba.baidu.com/p/3542454435?sha ...

  5. 【GoLang】GoLang 官方 对 error 处理的意见

    The Go Blog Errors are values 12 January 2015 A common point of discussion among Go programmers, esp ...

  6. Ebase Xi The world's best RAD platform.

    Ebase Xi : http://www.ebasetech.com/ The world's best RAD platform. Xi combines browser and mobile a ...

  7. php利用svn hooks将程序自动发布到测试环境

    利用svn hooks将php程序自动发布到测试环境 复制仓库hooks目录下的post-commit.tmpl为post-commit cp post-commit.tmpl post-commit ...

  8. [转] 理解 Thread.Sleep 函数

    原文链接:http://www.cnblogs.com/ILove/archive/2008/04/07/1140419.html 我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时 ...

  9. modbus协议讲义

        Modbus 一个工业上常用的通讯协议.一种通讯约定.Modbus协议包括RTU.ASCII.TCP.其中MODBUS-RTU最常用,比较简单,在单片机上很容易实现.虽然RTU比较简单,但是看 ...

  10. 使用json格式输出

    /** * json输出 * * @param unknown_type $info */ public function json_out ($info) { header('Content-typ ...