LIS 问题 二分查找优化
按n=5,a-{4,2,3,1,5}为例
dp的值依次是:
INF INF INF INF INF
4 INF INF INF INF
2 INF INF INF INF
2 3 INF INF INF
1 3 INF INF INF
1 3 5 INF INF
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
using namespace std;
int a[];
int n;
int dp[];//长度为i+1的上升子序列中末尾元素的最小值(不存在是INF)
int INF=0x3f3f3f3f;
void solve()
{
fill(dp,dp+n,INF);
for(int i=;i<n;i++)
{
*lower_bound(dp,dp+n,a[i])=a[i];
}
// for(int i=0;i<n;i++)
// printf("%d ",dp[i]);
// printf("\n");
printf("%d\n",lower_bound(dp,dp+n,INF)-dp)z-=;
} int main()
{
scanf("%d",&n);
for(int i=;i<n;i++)
scanf("%d",&a[i]);
solve();
return ;
}
LIS 问题 二分查找优化的更多相关文章
- 集训第四周(高效算法设计)N题 (二分查找优化题)
		
原题:poj3061 题意:给你一个数s,再给出一个数组,要求你从中选出m个连续的数,m越小越好,且这m个数之和不小于s 这是一个二分查找优化题,那么区间是什么呢?当然是从1到数组长度了.比如数组长度 ...
 - 南理第八届校赛同步赛-F sequence//贪心算法&二分查找优化
		
题目大意:求一个序列中不严格单调递增的子序列的最小数目(子序列之间没有交叉). 这题证明贪心法可行的时候,可以发现和求最长递减子序列的长度是同一个方法,只是思考的角度不同,具体证明并不是很清楚,这里就 ...
 - 【二分查找+优化O(n)】【续UVA1121】Subsequence
		
之前的二分答案做法 http://blog.csdn.net/zy691357966/article/details/40212215 二分查找做法: 我们首先试试只枚举终点.对于终点j,我们的目标是 ...
 - 集训第四周(高效算法设计)B题 (二分查找优化题)
		
---恢复内容开始--- Description Before the invention of book-printing, it was very hard to make a copy of ...
 - 集训第四周(高效算法设计)C题 (二分查找优化题)
		
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
 - 从三数之和看如何优化算法,递推-->递推加二分查找-->递推加滑尺
		
人类发明了轮子,提高了力的使用效率. 人类发明了自动化机械,将自己从重复的工作中解脱出来. 提高效率的方法好像总是离不开两点:拒绝无效劳动,拒绝重复劳动.人类如此,计算机亦如是. 前面我们说过了四数之 ...
 - SPOJ 3943 - Nested Dolls 最长不下降子序列LIS(二分写法)
		
现在n(<=20000)个俄罗斯套娃,每个都有宽度wi和高度hi(均小于10000),要求w1<w2并且h1<h2的时候才可以合并,问最少能剩几个. [LIS]乍一看跟[这题]类似, ...
 - 【学习记录】二分查找的C++实现,代码逐步优化
		
二分查找的思想很简单,它是针对于有序数组的,相当于数组(设为int a[N])排成一颗二叉平衡树(左子节点<=父节点<=右子节点),然后从根节点(对应数组下标a[N/2])开始判断,若值& ...
 - 【部分转载】:【lower_bound、upperbound讲解、二分查找、最长上升子序列(LIS)、最长下降子序列模版】
		
二分 lower_bound lower_bound()在一个区间内进行二分查找,返回第一个大于等于目标值的位置(地址) upper_bound upper_bound()与lower_bound() ...
 
随机推荐
- Ubuntu使用小技巧汇总
			
1. Ubuntu创建/切换root用户 sudo passwd rootsu root 2. 解决Ubuntu14.04系统没有自带右键打开终端的问题 sudo apt-get install na ...
 - CodeForces-1076B Divisor Subtraction 找规律
			
题目链接:https://vjudge.net/problem/CodeForces-1076B 题意: 题目要求给定一个数,要求每次减去其最小素因数(既是素数又是其因数),问直到n=0需要做几次运算 ...
 - GitHub的学习和使用
			
大二寒假阶段: 今天初学了GitHub,并下载了git base,在如下大佬给的链接下并完成了新用户的注册以及项目的上传学习. 网站的新用户注册界面: https://g ...
 - NodeJS框架一览
			
NodeJS 框架一览 Express 当你使用Node.js构建web应用程序时, Express通常被视为事实上的Web服务器.它的哲学(一个可以使用中间件包扩展的简约核心)是大多数Node.js ...
 - Mybatis配置文件无故报错、无自动完成提示的解决方法,及自动生成主要配置项
			
1.引子 Mybatis配置文件显示红叉有错误,而实际检查又没有错误,这是因为开发环境不能识别这种类型的xml文件.要解决这个问题,就要让IDE开发环境能够“认识”这个文件类型,我们要让IDE环境将这 ...
 - quartz2.2.1bug
			
quartz2.1.5 调用 scheduler.start()方法时报这样一个异常: 严重: An error occurred while scanning for the next trigge ...
 - java常见的 http 请求库比较
			
java常见的http请求库有httpclient,RestTemplate,OKhttp,更高层次封装的 feign.retrofit 1.HttpClient HttpClient:代码复杂,还得 ...
 - [HEOI2013]ALO(可持久化Trie+链表)
			
你永远不会相信一个快AFO的选手不会可持久化Trie. 其实异或粽子那题可以用可持久化Trie做,不过我还是没用,用的一般的Trie(其实可持久化是多此一举),于是到现在还是不会可持久化Trie. 这 ...
 - Oracle存储过程案例集合
			
注:使用的工具为PLSQL Developer 壹.while简单使用(替换字符串中的字符,和REPLACE效果一样) 注: 这里没有使用REPLACE函数 1.建立存储过程 CREATE OR RE ...
 - IntelliJ IDEA2018.2.7安装和破解教程
			
一.安装 IntelliJ IDEA2018.2.7 IDEA官网下载地址链接:https://www.jetbrains.com/idea/download/previous.html 1.进入网站 ...