1. 程式人生 > >NOIp模擬1 Incr(LIS的nlogn算法)

NOIp模擬1 Incr(LIS的nlogn算法)

算法 問題 () int bsp logs style out noi

【分析】

這題就是拿總長度減去LIS啦,很明顯。

問題是數據範圍,這裏用n^2就會超時,所以我們選用LIS的nlogn算法,如下。

【代碼】

 1 #include <bits/stdc++.h>
 2 #define inf 0x7fffffff
 3 using namespace std;
 4 
 5 int n, a[100005], k, f[100005], ans;
 6 int g[100005];//記錄當前的最優子序列
 7 
 8 int main() {
 9     cin >> n;
10     for (int i=1;i<=n;++i) {
11         cin >> a[i];
12 g[i]=inf; 13 } 14 for (int i=1;i<=n;++i) { 15 k=lower_bound(g+1, g+n+1, a[i])-g;//找到a[i]可插入的位置 16 g[k]=a[i]; 17 f[i]=k; 18 } 19 for (int i=1;i<=n;++i) 20 ans=max(ans, f[i]); 21 cout << n-ans << endl; 22 }

NOIp模擬1 Incr(LIS的nlogn算法)