luogu3902遞增 二分

2021-09-25 23:50:24 字數 744 閱讀 2771

>description

現有數列a ,修改最少的數字,使得數列嚴格單調遞增。

>input

第1行,1個整數n(1<=n<=100000)

第2行,n個整數a1,a2,……an(1<=ai<=1000000000)

>output

1個整數,表示最少修改的數字

>sample input

31 3 2

>sample output

1>解題思路

一開始還以為是算逆序對的一道題,但是一直做不出來,看了一下題解才發現是用二分。****

列舉每乙個數,把數列存進陣列a,如果當前數大於陣列的最後乙個數,就直接加入陣列,不然就用二分在陣列中找到大於當前數的第乙個數的位置存入。

>**

#include

#include

using namespace std;

int f,n,ans,aa,a[

100005];

int main()

a[l]

=aa;}}

printf

("%d"

,ans)

;return0;

}

LIS,二分 洛谷P3902 遞增

求將乙個序列轉換為嚴格遞增序列的最小次數 求出乙個最長上公升的子串行,剩下的元素個數即為要修改的次數,由於資料很大,我們需要用到nl ogn nlo gn 的方法,其實,在二分查詢的每次替換中就可以當作一次修改操作,我們可以利用這個特性直接求出答案,而不必用 n n 去減 include inclu...

Luogu 1083 借教室(二分,差分)

在大學期間,經常需要租借教室。大到院系舉辦活動,小到學習小組自習討論,都需要 向學校申請借教室。教室的大小功能不同,借教室人的身份不同,借教室的手續也不一樣。面對海量租借教室的資訊,我們自然希望程式設計解決這個問題。我們需要處理接下來n天的借教室資訊,其中第i天學校有ri個教室可供租借。共有m份 訂...

最長遞增子串行!!!(DP ,二分)

最長遞增子串行 time limit 1000 ms memory limit 32768 k total submit 158 64 users total accepted 68 56 users rating special judge no description 給出乙個數字序列求其最長的...