Stock Exchange (最大上升子子串)
- /*
- 题意:
- 给定L个整数A1,A2,...,An,按照从左到右的顺序选出尽量多的整数,
- 组成一个上升序列(子序列可以理解为:删除0个或者多个数,其他的数的吮吸不变)。
- 例如,1,6,2,3,7,5,可以选出上升子序列1,2,3,5,也可以选出1,6,7,
- 但前者更长,选出的上升子序列中相邻元素不能相等。
- 思路:
- 开辟一个栈,每次取栈顶元素s和读到的元素a做比较,如果a>s, 则加入栈;
- 如果a<s,则二分查找栈中的比a大的第1个数,并替换。 最后序列长度为栈的长度。
- */
- #include<iostream>
- #include<algorithm>
- #include<cstring>
- using namespace std;
- int a[];
- int main()
- {
- int n,u,k;
- while(cin>>n)
- {
- a[]=-;
- k=;
- for(int i=;i<n;i++)
- {
- cin>>u;
- if(a[k]<u)
- {
- a[++k]=u;
- }
- else
- {
- int l=,r=k,mid;
- while(l<=r)
- {
- mid=l+(r-l)/;
- if(u>a[mid])
- l=mid+;
- else
- r=mid-;
- }
- a[l]=u;
- }
- }
- cout<<k<<endl;
- }
- }
- #include <stdio.h>
- #include <string.h>
- //author:YangSir
- int a[];
- int main(){
- int n,i,max,b,num,x;
- while(~scanf("%d",&n)){
- num=;
- a[]=-;
- scanf("%d",&b);
- a[]=max=b;
- for(i=;i<n;i++){
- scanf("%d",&b);//数组的每个值变化的过程就表示子串一个个代入
- if(max<b){
- max=b;
- num++;
- a[num]=max;//子串在增长
- }
- else{
- x=num-;
- while(a[x]>=b)
- x--;
- a[x+]=b;
- }
- max=a[num];//max可能会变
- }
- printf("%d\n",num);
- }
- return ;
- }
- #include<stdio.h>
- #include<algorithm>
- using namespace std;
- #define INF 1<<30
- int main()
- {
- int n, a[], dp[];
- while(~scanf("%d", &n))
- {
- for(int i=; i<n; i++)
- {
- scanf("%d", a+i);
- dp[i] = INF;
- }
- for(int i=; i<n; i++)
- *lower_bound(dp, dp+n, a[i]) = a[i];
- printf("%d\n", lower_bound(dp, dp+n, INF)-dp);
- }
- return ;
- }
Stock Exchange (最大上升子子串)的更多相关文章
- POJ3903:Stock Exchange(LIS)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87125#problem/E 题目: Description The world ...
- POJ 3903 Stock Exchange
Stock Exchange Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2954 Accepted: 1082 De ...
- POJ 3903:Stock Exchange(裸LIS + 二分优化)
http://poj.org/problem?id=3903 Stock Exchange Time Limit: 1000MS Memory Limit: 65536K Total Submis ...
- POJ - 3903 Stock Exchange(LIS最长上升子序列问题)
E - LIS Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Descripti ...
- POJ 3903 Stock Exchange (E - LIS 最长上升子序列)
POJ 3903 Stock Exchange (E - LIS 最长上升子序列) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action ...
- poj3903 Stock Exchange(最长上升子序列)
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:id=3903">http://poj.org/problem?id=3903 Descrip ...
- poj3903 Stock Exchange 二分+dp
题目地址:http://poj.org/problem?id=3903 题目: Description The world financial crisis is quite a subject. S ...
- Poj 3903 Stock Exchange(LIS)
一.Description The world financial crisis is quite a subject. Some people are more relaxed while othe ...
- POJ3903 Stock Exchange LIS最长上升子序列
POJ3903 Stock Exchange #include <iostream> #include <cstdio> #include <vector> #in ...
随机推荐
- C/C++文件操作经验总结
最近在做一个从groundtruth_rect.txt中读取按行存储的矩形元素(x, y, w, h),文本存储的格式如下: 310,102,39,50 308,100,39,50 306,99,39 ...
- SpringBoot部署到Linux上AppserverApplication,访问不到控制层
放在本地是好好的,可以请求到,放到Linux上去的话就直接404, 解决办法: SpringBoot有个加载类叫AppserverApplication.这个大家应该都知道,我们平常都是如下写: @S ...
- Wine 总结
下诉描述有些问题,我用非root用户安装的软件有些也会安装到root用户的家目录里不知道为什么:[我知道了,貌似用了sudo的安装的都是在root目录里..] 经过测试,最好用root权限安装,否则会 ...
- 014 Android 自定义组合控件
1.需求介绍 将已经编写好的布局文件,抽取到一个类中去做管理,下次还需要使用类似布局时,直接使用该组合控件的对象. 优点:可复用. 例如要重复利用以下布局: <RelativeLayout an ...
- 字典的学习1——参考Python编程从入门到实践
字典:从汉语词意的角度理解,字典就是一个工具书,可以查找某个字.词.成语等的详细解释,字与解释相对应,而Python中字典则是一些列键和值相对应. Python中,字典放在花括号{键:值}中,eg: ...
- SAS学习笔记47 Macro Quoting
简单来说:Macro Quoting就是将具有特殊功能字符及字母组合的特殊功能隐藏掉.例如:让分号(;)不再表示一个语句的结束,而就是一个普普通通的字符:让GE不再表示大于等于的比较符,而就是两个普普 ...
- jdk8新特性--函数式接口的使用
函数式接口的概念: 函数式接口的格式: 示例: 函数式接口的使用: 简化lambda表达式:
- python3 内置方法 字符串转换为字典
内置方法:eval()将字符串转换为字典代码: str = '''{'backend':'www.oldboy.org', 'record':{ 'server':'122.111.2.23', 'w ...
- zabbix的离线安装方法----孙祎晨,如需转载请注明出处,谢谢配合。
------------------------zabbix的离线安装步骤--------------------------------------------------------------- ...
- Luogu5400 CTS2019随机立方体(容斥原理)
考虑容斥,计算至少有k个极大数的概率.不妨设这k个数对应的格子依次为(k,k,k)……(1,1,1).那么某一维坐标<=k的格子会对这些格子是否会成为极大数产生影响.先将这样的所有格子和一个数集 ...