最长递增子序列
big up
这个作者很懒,什么都没留下…
展开
-
uva10131
题目大意:给出n只大象的属性, 包括重量w, 智商s, 现在要求找到一个连续的序列, 要求每只大象的重量比前一只的大, 智商却要小, 输出最长值和方案, 方案不唯一的时候任意输出一种。思路: 将重量从小到大进行排序,按智商大到小最一个最长递增子序列 代码:#include <iostream>using namespace std;#include <cstring>#include <st原创 2016-01-25 17:18:32 · 252 阅读 · 0 评论 -
uva437
题目大意: 有几种不同的长方体,每个长方体有无数个,求可以叠起来的最大高度。要求:接触的两个面,下面的面的长宽要分别大于上面的长宽,相等也不可以。思路: 分别把一个长方体的六种状态存起来,然后求最大上升子序列就可以了。代码:#include <iostream>using namespace std;#include <stdio.h>#include <cstring>#include原创 2016-02-26 20:23:48 · 384 阅读 · 0 评论 -
uva10524
题目大意: 找一个最长(假设长度为2N-1)的子序列,使得前N个元素递增,后N个元素递减。思路: 刚开始没有看到数据可以达到10000 用了求最长递增子序列的方法。。超时了。。 参考了别人的代码。 用一个栈保存子序列的值,从栈顶为最大的数。 如果当前的数大于栈顶的数字的话,那么就把该数压入栈中。 如果当前的数等于栈顶的数字的话,那么不压入栈中,最长递增子序列的值跟栈顶是一样的。 如果原创 2016-02-28 16:35:14 · 311 阅读 · 0 评论 -
uva10534(最长递增子序列的算法变形 复杂度较低)
题目大意: 给出一串数字,求出这串数字中前n + 1个数字是递增的,后n + 1个数字是递减的,问这样的数字串最长是多少。思路: 类似于uva10524 不能用最长递增子序列的算法 因为最大是10000 双重for会TLE代码:#include <iostream>using namespace std;#include <cstring>#include <stdio.h>#incl原创 2016-04-18 13:56:37 · 329 阅读 · 0 评论 -
关于求最长递增子序列会超时的问题(使用栈)
类似于uva10524的题目。 uva10534的题目大意是给出一串数字,最多有10000个,问这串数字里面可以组成的前n个数字递增和后n个数字递减的最长序列是多少。如果直接用求最长递增子序列的方法的话,有两层for肯定是会超时的。那么可以使用堆栈的方式,用栈保存数字。 如果遇到第一个数字或者遇到比当前的栈顶数字更大的数字的话那么就将其存入栈顶中。 如果遇到的数字不比栈顶大的话,那么就找栈中刚原创 2016-05-15 14:43:59 · 516 阅读 · 0 评论