hdoj5256序列变换【LIS】
来源:互联网 发布:药店销售软件 编辑:程序博客网 时间:2024/05/10 02:20
序列变换
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 894 Accepted Submission(s): 355
Problem Description
我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增。其中无论是修改前还是修改后,每个元素都必须是整数。
请输出最少需要修改多少个元素。
请输出最少需要修改多少个元素。
Input
第一行输入一个,表示有多少组数据
每一组数据:
第一行输入一个,表示数列的长度
第二行输入N个数。
每一个数列中的元素都是正整数而且不超过。
每一组数据:
第一行输入一个,表示数列的长度
第二行输入N个数。
每一个数列中的元素都是正整数而且不超过。
Output
对于每组数据,先输出一行
Case #i:
然后输出最少需要修改多少个元素。
Case #i:
然后输出最少需要修改多少个元素。
Sample Input
221 1032 5 4
Sample Output
Case #1:0Case #2:1
#include<cstdio>#include<cstdlib>#include<cstring>using namespace std;const int MAX=100010;int la[MAX];int lb[MAX];int lis(int n){ int i,j; lb[1]=la[1];int len=1; for(i=2;i<=n;++i){ int left=1,right=len,flag=0; if(la[i]>=lb[len]){ len++;lb[len]=la[i]; continue; } while(left<=right){ int mid=(left+right)>>1; if(la[i]>=lb[mid]){ left=mid+1; } else { right=mid-1; } } lb[left]=la[i]; } return len;}int main(){ int t,n,i,j,k=1; scanf("%d",&t); while(t--){ scanf("%d",&n); for(i=1;i<=n;++i){ scanf("%d",&la[i]); la[i]-=i; } int m=lis(n); printf("Case #%d:\n%d\n",k++,n-m); } return 0;}
0 0
- hdoj5256序列变换【LIS】
- hdoj5256序列变换(LIS变形)
- HDOJ5256 序列变换(dp)
- hdoj5256 序列变换(2015年百度之星程序设计大赛
- hdu5256【序列变换】【LIS】
- Problem 5256 序列变换 【LIS】
- HDU-5256 序列变换(LIS)
- hdu5256 序列变换 dp LIS
- hdu 5256 序列变换 (LIS变形)
- hdoj--5256--序列变换(lis变形)
- 杭电5256 序列变换(LIS)
- hdoj 5256 序列变换 【LIS 变形】
- HDU - 5256 序列变换 (LIS转化)
- 【HDU】5256 - 序列变换(LIS)
- HDU 5256 (序列变换 LIS)
- hdoj 5256 序列变换 (LIS变形)
- HDU - 5256 序列变换 【LIS变形】
- HDOJ-----5256序列变换(LIS)
- php文件上传功能
- 【全球50大在线学习网站】涉及超全的9个品类,选择一个你感兴趣的去看看吧!
- 解决eclipse中出现Resource is out of sync with the file system问题
- oracle 创建表分区
- svn安装
- hdoj5256序列变换【LIS】
- BlToolKit database connection timeout exception
- Subsets C#
- SpringMVC和Struts2的区别
- STM32停止模式唤醒不恢复时钟的后果
- 我的第一个java定时器
- USB中的描述符详解【一】
- EasyUI的TreeGrid应用
- MSChart的初步使用和学习