百度之星1005 序列变换(lis)
来源:互联网 发布:mac卸载程序 残留图标 编辑:程序博客网 时间:2024/06/06 04:00
序列变换
Time Limit: 20 Sec Memory Limit: 256 MB
题目连接
http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=601&pid=1003
题目描述
我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增(严格递增即相邻元素不存在相等的情况)。其中无论是修改前还是修改后,每个元素都必须是整数。 请输出最少需要修改多少个元素。
输入
第一行输入一个T(1≤T≤10),表示有多少组数据
每一组数据:
第一行输入一个N(1<N<100000)表示数列的长度
第二行输入N个数每一个数列中的元素都是正整数而且不超过1e6. ,
输出
对于每组数据,先输出一行
Case #i:
然后输出最少需要修改多少个元素。
样例输入
221 1032 5 4
样例输出
Case #1:0Case #2:1
要想做这道题需要把每组数据里的每个元素减去下标,然后再求n-最长上升子序列长度.
#include<stdio.h>#include<string.h>int a[100100],b[100100],len;int fun(int i){int l,r,mid;l=1;r=len;while(l<=r){mid=(l+r)/2;if(a[i]>=b[mid])l=mid+1;else r=mid-1;}return l;}int main(){int t,i,k=1;scanf("%d",&t);while(t--){int n;memset(a,0,sizeof(a));memset(b,0,sizeof(b));scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); a[i]-=i;}//下面是求最长上升子序列的长度 b[1]=a[1];len=1;for(i=2;i<=n;i++){if(b[len]<=a[i]){b[++len]=a[i];}else {int pos=fun(i);b[pos]=a[i];}}printf("Case #%d:\n",k++);printf("%d\n",n-len);}return 0;}
0 0
- 百度之星1005 序列变换(lis)
- 2015百度之星初赛2 1005 序列变换(lis变形)
- 2015百度之星初赛2 1005 序列变换(LIS变形)
- 序列变换 2015百度之星(初赛)1005
- 百度之星 2015 初赛(2) 1005 序列变换
- 【百度之星初赛】序列变换(二分,贪心)
- 杭电5256 序列变换(LIS)
- HDU - 5256 序列变换 (LIS转化)
- 【HDU】5256 - 序列变换(LIS)
- HDU 5256 (序列变换 LIS)
- HDOJ-----5256序列变换(LIS)
- hdu5256 序列变换(LIS模型)
- hdoj5256序列变换【LIS】
- hdu5256【序列变换】【LIS】
- 【百度之星初赛2】序列变换(最长上升子序列)
- HDU5256 序列变换(LIS求严格上升子序列)
- 百度之星 2015 初赛(1) 1003 序列变换
- 2015年百度之星初赛(1) --- C 序列变换
- 使用.NET中的XML注释(一) -- XML注释标签讲解
- 没有绝对公正——而是竞争
- [leetcode-222]Count Complete Tree Nodes(c)
- Torch7 doc
- 插值技术之Catmull-Rom Spline Interpolating(2)
- 百度之星1005 序列变换(lis)
- HDOJ 2068 RPG的错排(排列组合+错排)
- (待翻译)github入门之遇到SSH Permission Denied问题的原因和解决
- 投篮,当投篮率为多少时,选择玩法1或者玩法2
- strdup 的用法
- 重构的基本概念和原则
- String,StringBuffer与StringBuilder的区别?
- RAC+DG切换遇到的问题
- Cocos2d-x 多分辨率屏幕适配