BNU49098:神奇的身高
来源:互联网 发布:淘宝做一个首页多少钱 编辑:程序博客网 时间:2024/04/28 07:23
有一群小伙伴站成一行,每个人的身高都是非负整数,但是他们站在一起并不和谐。需要将他们的身高变成严格单调递增的正整数序列才是和谐的。现在你有一种神奇的魔法,可以任意改变一个人的身高。现在问题来了,你最少需要改变多少人的身高才能使整个队伍和谐。(改变后的身高必须为整数)
Input
有多组测试数据,保证大数据不超过15组。
每组测试数据:
第1行:一个数n表示人数(1≤n≤100000)
第2~n+1行:每行1个数,对应数组的元素(0≤A[i]≤10^9)
以EOF结束
Output
输出最少需要修改几人的身高才能使整个队伍和谐。
Sample Input
212221
Sample Output
01
Source
第十三届北京师范大学程序设计竞赛决赛
Author
zpk
思路:根据该位数字与下标的差值求最长非递减序列的长度
#include <iostream>#include <stdio.h>#include <string.h>#include <stack>#include <queue>#include <map>#include <set>#include <vector>#include <math.h>#include <algorithm>using namespace std;#define ls 2*i#define rs 2*i+1#define up(i,x,y) for(i=x;i<=y;i++)#define down(i,x,y) for(i=x;i>=y;i--)#define mem(a,x) memset(a,x,sizeof(a))#define w(a) while(a)#define LL long longconst double pi = acos(-1.0);#define N 100005#define mod 19999997const int INF = 0x3f3f3f3f;#define exp 1e-8int n,b[N],ans;int main(){ int i,j,k,x; w(~scanf("%d",&n)) { ans = 0; up(i,0,n) b[i]=INF; up(i,1,n) { scanf("%d",&x); if(x-i+1<=0) continue; k = upper_bound(b+1,b+1+n,x-i)-b; b[k]=x-i; ans = max(ans,k); } printf("%d\n",n-ans); } return 0;}
0 0
- BNU49098:神奇的身高
- 神奇的身高
- bnuoj49098 神奇的身高
- BNUOJ49098 神奇的身高(LIS)
- BNUOJ-49098-神奇的身高
- BNU 49098 神奇的身高
- BNUOJ49098 神奇的身高 - DP (LIS)
- BNU 49048 神奇的身高【思维+LIS】
- Codevs4246 奶牛的身高
- 4246 奶牛的身高
- 身高
- xbox360 计算身高的办法
- Codevs 4246 奶牛的身高
- [CODEVS P4246]奶牛的身高
- 输入一组身高在170到190之间(5个身高)比较身高差,选出身高差最小的两个身高,若身高差相同,选平均身高高的那两个身高,从小到达输出
- 男人的标准身高- -(转帖)
- 【转载】三国演义里将领的身高
- 促进身高的几种食物
- LeetCode:Remove Linked List Elements
- NHiberbate使用
- 老版本ubuntu更新原
- JAVA中静态初始化块和非静态初始化块的区别
- 正则表达式的JS验证
- BNU49098:神奇的身高
- SpringMVC系列之(二) springMVC和Struts异同
- MySql 分页存储过程
- virtualbox虚拟机ubuntu和宿主机xp文件件共享方法
- subline 乱码问题
- Apache Commons fileUpload文件上传
- ios学习笔记:UISearch Bar
- Android基础系列-----------GestureDetector
- Android手机处理图片兼容性问题