您的位置:首页 > 其它

XYLX 10.12 数列

2015-10-30 20:43 253 查看

数列

题目描述

数列 A1,A2,…,AN,修改最少的数字,使得数列严格单调递增

输入输出

输入格式

第 1 行:一个正整数 N

第 2 行:N 个正整数,数列 A1,A2,…,AN

输出格式

第 1 行:一个整数,表示最少修改的数字

样例

输入样例

3

1 3 2

输出样例

1

数据范围

对于 50% 的数据,N ≤ 10^3

对于 100% 的数据,1 ≤ N ≤ 10^5,1 ≤ Ai ≤ 10^9

分析

该题要求求得单调递增序列,所以数字不能相同。 如果直接求得最长上升子序列那么会出现错误,因为两个数中间已经不能放数了,因为保证不重复,如2,3之间就不可以再放入数字,所以直接求得单调上升序列会使得错误的解出现,而将其转换成严格不降之后是肯定可以放入数字的,因为可以重复,所以只要找出转换后序列的最长不降序列,再用总数减去即可得到解。中间必然可以放下数字,不会出现非法的解的情况。因为数据范围较大,所以不能采用传统的O(n^2)的算法,采用O(nlog(n))的算法。

代码如下

program p4214;
var n,i,x,pos:longint;
f:array[0..10000] of longint;
function binarysearch(l,r:longint):longint;
var mid:longint;
begin
while l<r do
begin
mid:=(l+r)>>1;
if f[mid]>=x
then r:=mid
else l:=mid+1;
end;
exit(l);
end;
begin
readln(n);
f[0]:=0;
for i:=1 to n do
begin
read(x);
x:=x-i;
if x>=f[f[0]]
then
begin
inc(f[0]);
f[f[0]]:=x;
end
else
begin
pos:=binarysearch(1,f[0]);
f[pos]:=x;
end;
end;
write(n-f[0]);
end.


终于等到你

——张靓颖


到了某个年纪你就会知道

一个人的日子真的难熬

渐渐开始尝到孤单的味道

时间在敲打着你的骄傲

过了某个路口你就会感到

彻夜陪你聊天的越来越少

厌倦了被寂寞追着跑

找个爱你的人就想托付终老

能陪我走一程的人有多少

愿意走完一生的更是寥寥

是否刻骨铭心并没那么重要

只想在平淡中体会爱的味道

终于等到你

还好我没放弃

幸福来得好不容易

才会让人更加珍惜

终于等到你差点要错过你

在最好的年纪遇到你

才算没有辜负自己

终于等到你

能陪我走一程的人有多少

愿意走完一生的更是寥寥

是否刻骨铭心并没那么重要

只想在平淡中体会爱的味道

终于等到你还好我没放弃

幸福来得好不容易

才会让人更加珍惜

终于等到你差点要错过你

在最好的年纪遇到你

才算没有辜负自己

终于等到你

终于等到你

还好我没放弃

幸福来得好不容易

才会让人更加珍惜

终于等到你差点要错过你

在最好的年纪遇到你

才算没有辜负自己

终于等到你



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息