現有數列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: 複製
31 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 的資料翻轉過來了,這樣子算的是 以...