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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NOIp模拟1 Incr(LIS的nlogn算法)相关的知识,希望对你有一定的参考价值。

【分析】

这题就是拿总长度减去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算法)的主要内容,如果未能解决你的问题,请参考以下文章

NOIP2016模拟 最长公共子序列

LIS最长上升子序列O(n^2)与O(nlogn)的算法

LIS最长上升子序列O(nlogn)算法

LIS的优化算法O(n log n)

模板LIS模板 洛谷P1091 [NOIP2004提高组]合唱队形 [2017年4月计划 动态规划11]

[校内自测] Incr (LIS+智商)