本题就是一题LIS(最长递增子序列)的问题。本题要求求最长递增子序列和最长递减子序列。
dp的解法是O(n*n),这个应该大家都知道,不过本题应该超时了。
因为有O(nlgn)的解法。
但是由于本题的数据特殊性,故此本题可以利用这个特殊性加速到O(n)的解法,其中的底层思想是counting sort分段的思想。就是如果你不会counting sort的话,就很难想出这种优化的算法了。
...
分类:
其他好文 时间:
2014-08-09 23:18:49
阅读次数:
393
题目:UVA - 10131Is Bigger Smarter?(DAG)
题目大意:给出一群大象的体重和IQ,要求挑选最多的大象,组成一个序列,严格的体重递增,IQ递减的序列。输出最多的大象数目和这些大象的序列(其中一种就可以)。
解题思路:DAG上的DP。和之前的一篇相似。uva437 - The Tower of Babylon(DAG上的DP)。就是将每两只大象满足上面...
分类:
其他好文 时间:
2014-08-09 23:16:19
阅读次数:
273
题意 求n个数字的和最大的递增子序列
基础的dp题目 令d[i]表示以第i个数字结尾的和最大的递增子序列 有d[i]=max(d[i],d[j]+a[i]) j为1到a之间的数 且a[i]>a[j]...
分类:
其他好文 时间:
2014-08-09 21:34:49
阅读次数:
202
给一个长度为n的A数列,每个数是0或1,要求构造一个递增数列B,长度为n,每个数为[0,1]的实数,使得∑(Ai-Bi)2最小。
可以发现,最前面连续的0和最后面连续的1都没有意义,中间可以看成1和0个数不同的101010串,
对于其中每一个10串,这段B序列取得最佳值是 1的个数/总个数,
每次添加取一段,如果这一段的最佳值小于上一段的取值,那么就把两段合起来更新一个新的最佳...
分类:
其他好文 时间:
2014-08-09 21:28:19
阅读次数:
229
题目大意:就是给定一段区间令其中的数增加一个递增序列(也就是说第一个+1,第二个+2.。。。。)询问操作是区间的和这里的查询很简单,但是对于添加递增序列入区间就比较搞脑子了我们需要一个add[]作为区间的首个数字增加的值,del[]表示等差数列的公差,因为你每次添加进入一个等差数列,是可以叠加的但公...
分类:
其他好文 时间:
2014-08-09 18:21:08
阅读次数:
279
题目:一条龙有n个头,有m个勇者,勇者的能力值大于龙头的大小就能打败他,每个勇者需要能力值对等的佣金,
问使用至少多少钱可以杀掉龙。
分析:贪心。首先,将龙和勇者斗都递增排序;然后,每次雇佣当前能力值最小的可以杀龙的勇者即可。
(如果当前的勇者导致不适最优解,则他之前有比他佣金高的,则他一定更早被雇佣)
说明:田忌赛马(⊙_⊙)。
#incl...
分类:
其他好文 时间:
2014-08-09 15:58:58
阅读次数:
268
1. 动态规划,使用一个数组保存当前的最大递增子序列长度,时间复杂度为O(N^2)
# include
# include
# include
using namespace std;
int longestsub(int a[],int n)
{
int *dis=(int *)malloc((n+1)*sizeof(int));
dis[0]=1;
int i,j;
for(...
分类:
其他好文 时间:
2014-08-09 13:30:07
阅读次数:
221
--摘录自《T-SQL编程入门经典》 ROW_NUMBER()函数根据作为参数传递给这个函数的 ORDER BY 子句的值,返回一个不断递增的整数值。如果 ROW_NUMBER 的 ORDER BY 的值和结果集中的顺序相匹配,返回值将是递增的,以升序排列。如果 ROW_NUMBER 的 ORDE....
分类:
其他好文 时间:
2014-08-09 13:25:17
阅读次数:
270
题意:给定若干大象的体重及智商值,求满足大象体重严格递增,智商严格递减的序列的最大个数,
并打印任意一组取得最大值的序列的大象编号
分析:这个是LIS的应用,只不过判断条件有两个,可以先对大象的体重排序,但是要打印路径,
那就必须得回溯求路径,可以直接逆序循环求,当然递归也是一个好的选择...
分类:
其他好文 时间:
2014-08-09 11:47:47
阅读次数:
195
题意:从2到1的所有路径中找出最短的路,并且输出最短路径有几条。
策略:先求出最短路径,然后再找出从2到1的最短路径有几条。最短路径用dijkstra算法来求出,什么是dijkstra算法,简单来说,dijkstra算法就是路径长度递增次序产生最短路径的算法:
基本思想是:把集合V分成两组;
(1)S:已求出最短路径的顶点的集合
(2)V-S=T:尚未确定最短路径的顶点集合
将T中顶点按...
分类:
其他好文 时间:
2014-08-09 11:45:57
阅读次数:
275