摘要: 有两种算法复杂度为 O(n*logn) 和 O(n^2)O(n^2)算法分析如下: (a[1]...a[n] 存的都是输入的数)1、对于a[n]来说.由于它是最后一个数,所以当从a[n]开始查找时,只存在长度为1的上升子序列;2、若从a[n-1]开始查找.则存在下面的两种可能性:(1)若a[n-1] < a[n] 则存在长度为2的上升子序列 a[n-1]、a[n];(2)若a[n-1] > a[n] 则存在长度为1的上升子序列 a[n-1]或者a[n];3、一般若从a[t]开始.此时最长上升子序列应该是按下列方法求出的:在a[t+1].a[t+2]… a[n]中.找出一个比a[t]大的且最长的 阅读全文
posted @ 2011-12-01 21:18 1050768624 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 题目中穷国和富国在两条平行线上,而且修得路不能交叉,每个富国有且仅有某一个穷国所需要的资源。由此可将其转化为求在两平行线间最多可画多少条不交叉的直线问题,所以直接对某条线上的点求LIS,当n = 0时输出0条路。根据LIS模板AC的代码:View Code #include <stdio.h>#include <string.h>#define N 500001int i, n;int a[N], d[N];int binsearch(int x, int len){ int l = 1, r = len, mid; while(l <= r) { mid = . 阅读全文
posted @ 2011-12-01 19:05 1050768624 阅读(157) 评论(0) 推荐(0) 编辑