题意:

给定n个数, 然后要求看看有多少对不上升子序列。

分析:

求出最长上升子序列, 那么整个序列中LIS外的数都会在前面找到一个比自己大的数, 所以不上升子序列最多有最长上升子序列个数个。

关于求LIS, 下列有两种DP算法

O(n²)

#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
#include<string>
#include<map>
#include<vector>
#include<algorithm>
#include<cmath>
#define rep(i,a,b) for(int i = a; i < b; i++)
#define _rep(i,a,b) for(int i = a; i <= b; i++)
using namespace std;
int a[ + ], dp[ + ], n;
int main()
{
/* 求出最长上升子序列, 那么整个序列中LIS外的数都会在前面找到一个比自己大的数*/ while(cin >> n){
rep(i,,n) cin >> a[i]; int ans = -; rep(i,,n){
dp[i] = ;
rep(j,,i){
if(a[j] < a[i]) dp[i] = max(dp[i] , dp[j] + );
ans = max(ans, dp[i]);
}
}
printf("%d\n", ans); }
return ;
}

二分思想, 设置一个栈, 扫描一遍序列, 每次将大于栈顶元素的入栈, 小于栈顶元素的在栈中找到一个刚好大于等于该元素的替换掉, 复杂度O(nlogn)

#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
#include<string>
#include<map>
#include<vector>
#include<algorithm>
#include<cmath>
#define rep(i,a,b) for(int i = a; i < b; i++)
#define _rep(i,a,b) for(int i = a; i <= b; i++)
using namespace std;
int a[ + ], dp[ + ], n;
int main()
{
/* 求出最长上升子序列, 那么整个序列中LIS外的数都会在前面找到一个比自己大的数*/ while(cin >> n){
rep(i,,n) {
cin >> a[i];
dp[i] = 1e9;
} for(int i = ; i < n; i++){
*lower_bound(dp, dp+n, a[i]) = a[i]; //每次找到一个>= a[i]的替换掉
}
printf("%d\n", lower_bound(dp,dp+n,1e9) - dp); //找到第一个INF的地址减去首地址就是最大子序列的长度; }

最新文章

  1. 安装Windows更新程序遇到错误:0x80070422
  2. Servlet,jsp,JSP技术 ,JSP编程
  3. h5弹框去掉ip地址
  4. Linux下NDK编译FFMPEG包含neon参数
  5. java 21-11 数据输入、输出流和内存操作流
  6. 【Network】一张图看懂 Reactor 与 Proactor 模型的区别
  7. php常见细节错误
  8. armp启动
  9. Saltstack系列1:安装配置
  10. 【同行说技术】iOS程序员从小白到大神必读资料汇总
  11. js中replace的正则替换
  12. adb网络调试
  13. activemq的两种基本通信方式的使用及总结
  14. 【面向对象设计原则】之依赖倒置原则(DIP)
  15. Chapter 9:Noise-Estimation Algorithms
  16. curl/libcurl获取打开网页平均网速
  17. C#版 - Leetcode 13. 罗马数字转整数 - 题解
  18. HDU1693 Eat the Trees 插头dp
  19. JavaWeb学习(二十九)———— 事务
  20. float浮动,定位

热门文章

  1. iOS Testing with Xcode 阅读笔记
  2. iOS WKWebView 加载进度条、导航栏返回&amp;关闭 (Swift 4)
  3. LightOJ 1235 - Coin Change (IV) (折半枚举)
  4. Educational Codeforces Round 46 (Rated for Div. 2) B. Light It Up
  5. Investigation LightOJ - 1068
  6. HDU 2227 Find the nondecreasing subsequences dp思想 + 树状数组
  7. Suricata的性能
  8. 用NPOI从Excel到DataTable
  9. ASP.NET相关事件及JS的执行顺序
  10. Oracle 十大SQL语句