序列变换

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 519    Accepted Submission(s): 245

Problem Description
我们有一个数列A1,A2...An,你如今要求改动数量最少的元素,使得这个数列严格递增。当中不管是改动前还是改动后,每一个元素都必须是整数。

请输出最少须要改动多少个元素。

 
Input
第一行输入一个T(1≤T≤10),表示有多少组数据



每一组数据:



第一行输入一个N(1≤N≤105),表示数列的长度



第二行输入N个数A1,A2,...,An。

每个数列中的元素都是正整数并且不超过106。

 
Output
对于每组数据,先输出一行



Case #i:



然后输出最少须要改动多少个元素。
 
Sample Input
2
2
1 10
3
2 5 4
 
Sample Output
Case #1:
0
Case #2:
1
 

非严格递增时,仅仅须要求最长不降子序列即可了;严格上升,就须要求a[i]-i序列的最长LIS;
a[j]-a[i]>j-i。即是两个元素不改变须要满足两数之差大于下标之差。

#include <iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define N 100005
#define LL __int64
int a[N];
int b[N];
int fun(int n)
{
int i,t,cnt=0;
for(i=0;i<n;i++)
{
t=upper_bound(b,b+cnt,a[i])-b;
//printf("%d \n",t);
if(t==cnt)
cnt++;
b[t]=a[i];
}
return cnt;
}
int main()
{
int i,T,n,cnt=1;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
a[i]-=i;
}
printf("Case #%d:%d\n",cnt++,n-fun(n));
}
return 0;
}


hdu 5256 序列变换 (LIS变形)的更多相关文章

  1. hdu 5256 序列变换(LIS最长上升子序列)

    Problem Description 我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增.其中无论是修改前还是修改后,每个元素都必须是整数. 请输出最少需要修改多 ...

  2. HDU 5256 - 序列变换 ,树状数组+离散化 ,二分法

    Problem Description 我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增.其中无论是修改前还是修改后,每个元素都必须是整数.请输出最少需要修改多少 ...

  3. hdu 5256 序列变换

    最长上升子序列 nlogn;也是从别人的博客学来的 #include<iostream> #include<algorithm> #define maxn 100000+5 u ...

  4. LIS 2015百度之星初赛2 HDOJ 5256 序列变换

    题目传送门 题意:中文题面 分析:LIS(非严格):首先我想到了LIS,然而总觉得有点不对:每个数先减去它的下标,防止下面的情况发生:(转载)加入序列是1,2,2,2,3,这样求上升子序列是3,也就是 ...

  5. hdoj--5256--序列变换(lis变形)

    序列变换 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  6. HDU 5489 Removed Interval (LIS变形)

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

  7. hdu 5248 序列变换(二分枚举)

    Problem Description 给定序列A={A1,A2,...,An}, 要求改变序列A中的某些元素,形成一个严格单调的序列B(严格单调的定义为:Bi<Bi+,≤i<N). 我们 ...

  8. 序列变换 HDU - 5256

    序列变换 HDU - 5256 题目链接 题目 我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增.其中无论是修改前还是修改后,每个元素都必须是整数. 请输出最少需 ...

  9. 序列变换(Lis变形)

    序列变换 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

随机推荐

  1. perl tk说明

    介绍: perl/Tk(也被称为pTK) 是一个模块和代码的收集,尝试 简单的配置Tk 8 部件工具包到强大的词素文文字, 动态内存,I/O, 和面向对象,它是一种解释脚本语言 来制作部件和程序 使用 ...

  2. 两年前实习时的文档——Platform学习总结

    1  概述 驱动程序实际上是硬件与应用程序之间的中间层.在Linux操作系统中,设备驱动程序对各种不同的设备提供了一致的訪问接口,把设备映射成一个特殊的设备文件,用户程序能够像其它文件一样对设备文件进 ...

  3. 济南最新公交线路一览(BRT)

    济南最新公交线路一览(BRT) 济南BRT1路 高速公交线路 黄岗路东5:30-21:30 全福立交桥西5:30-21:30 票价1元,刷卡9折,月票有效 高速公交公司 去程:黄岗路东(BRT) - ...

  4. flexigrid 修改json格式

    1.修改默认的json格式为key:value 修改前 rows: [{id:'ZW',cell:['ZW','ZIMBABWE','Zimbabwe','ZWE','716']},{id:'ZW', ...

  5. 0ctf-pwn_warmup-re_mips4

    Warmup(2) 程序很小,读写操作直接通过int 80h系统调用完成.栈溢出漏洞很明显,能溢出20字节.提示由于沙盒的保护只能来读取/home/warmup/flag文件.那么思路就很清楚了,打开 ...

  6. JSP 适配手机屏幕

    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scal ...

  7. file_get_contents()的另一种使用方法

    今天在网上看到一篇挺不错的文章,拿过来保存学习一下.本文源地址为:http://www.kuitao8.com/20140727/2867.shtml $data = file_get_content ...

  8. javascript中的with

    with语句主要用来对一个对象操作多个属性,使代码简洁易读. 语法: with(object) statements object是新的默认对象,statements是一个或多个语句 例如: var ...

  9. View的工作原理

    一.认识ViewRoot和DecorView 当Activity对象被创建的时候,会将DecorView添加到Window中,同时创建ViewRootImpl对象(ViewRoot对应于ViewRoo ...

  10. php中__autoload()方法详解

    [导读] PHP在魔术函数__autoload()方法出现以前,如果你要在一个程序文件中实例化100个对象,那么你必须用include或者require包含进来100个类文件,或者你把这100个类定义 ...