洛谷 P3902 遞增

2022-04-05 03:57:16 字數 734 閱讀 1840

現有數列a_1,a_2,\cdots,a_na1​,a2​,⋯,an​,修改最少的數字,使得數列嚴格單調遞增。

輸入格式:

第1 行,1 個整數n

第2 行,n 個整數a_1,a_2,\cdots,a_na1​,a2​,⋯,an​

輸出格式:

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

輸入樣例#1: 複製

3

1 3 2

輸出樣例#1: 複製

1

• 對於50% 的資料,n \le 10^3n≤103

• 對於100% 的資料,1 \le n \le 10^5 , 1 \le a_i \le 10^91≤n≤105,1≤ai​≤109

思路:n-最長嚴格上公升子串行。

看資料範圍,要用nlogn的求法。

如果有不會用nlogn的方法求的,可以戳這裡。

#include#include

#include

#include

#define maxn 100010

using

namespace

std;

intn,maxn;

inta[maxn],f[maxn];

intmain()

if(f[l]>a[i]) f[l]=a[i];}}

printf("%d

",n-maxn);

}

LIS,二分 洛谷P3902 遞增

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

洛谷P2766 最長遞增子串行問題

注 題目描述有誤,本題求的是最長不下降子串行 方案無限多時輸出 n 網路流求方案數,長見識了 第一問 dp同時得到f i 表示 以第i個數為開頭的最長不下降子串行長度 第二問 每個點拆出2個點 i 1,i 1 1,之間連流量為1的邊 如果f i 最長長度,源點向i 1連流量為1的邊 如果f i 1,...

洛谷 P1091 合唱隊形(最長遞增子串行)

最長遞增子串行 本題要點 1 left i 表示以i為結尾的最長嚴格遞增子串行長度 right i 表示以i 為開頭的最長嚴格遞減子串行長度 2 遍歷 1 i n 取 left i right i 1 的最大值。3 這裡計算 right 陣列時候,把 身高陣列 h 的資料翻轉過來了,這樣子算的是 以...