首页 > 代码库 > NOIp模拟1 Incr(LIS的nlogn算法)
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算法)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。