1. maxsum 最大连续子序列和 用d[i]表示以i结束的子序列和的最大值,状态转移方程为 d[i]=max{d[i-1]+a[i],a[i]},其中d[0]=a[0],然后对d[i] sort 取最大值 ...
分类:
其他好文 时间:
2016-09-24 14:56:05
阅读次数:
125
重点:大O记法,最大子序列和(4种算法),对数级算法(3个例子:对分查找、欧几里德算法、幂运算) 算法 算法(algorithm)是为求解一个问题需要遵循的、被清楚地指定的简单指令的集合。 数学基础 四个定义: 1.大O表示法:如果存在正常数 c 和 n0 使得当 N ≥ n0时,T(N) ≤ cf ...
分类:
编程语言 时间:
2016-09-17 14:53:07
阅读次数:
191
问题一:子数组和的最大值: 用f[i]表示以a[i]结尾的最大连续子序列和。i在0~n-1之间,最后比较所有的f[i]找到最大值。对于这样的以为动态规划,可以简化为用一个变量f滚动完成更新。 问题二:不相交子数组和之差的最大值。 我们需要将数组分成不相交的两部分,分别求所有可能的两部分的子数组的和的 ...
分类:
编程语言 时间:
2016-09-16 22:53:48
阅读次数:
240
遗留问题,此算法时间复杂度为 O(NlogN). 思考如何求得。 ...
分类:
其他好文 时间:
2016-09-14 10:52:24
阅读次数:
205
题目戳这 题目:给你一个序列,问你,这个序列只减少一个元素,减少之后是否为不上升序列或者不下降序列。 思路:直接对序列求最长不下降和不上升子序列,如果这个子序列的长度为n-1或者n的话,就符合题目条件。 最长不下降子序列和最长不上升子序列:这里使用数据结构的方法求最长不上升(下降)子序列的长度。就是 ...
分类:
其他好文 时间:
2016-09-13 20:38:49
阅读次数:
170
该算法的定义是:给出一个int序列,元素有正有负,找出其中的最大连续子序列的和。 例如:-2,11,-4,13,-5-2,;最大和为20(11,-4, 13)。 怎么考虑这个问题呢? 要充分利用,连续,这个条件。 连续子序列的和可能为正,也可能为负。如果为正,那么我们要继续加下去,因为如果后面一个数 ...
分类:
其他好文 时间:
2016-09-05 10:34:10
阅读次数:
133
求最大子矩阵和是DP中的一类题目,今天我们就来讲一下一维(序列)与二维(矩阵)最大和 一.求最大连续子序列和 只需定义sum,扫一遍,sum为负时sum=0,具体见代码 #include<cstdio> #include<algorithm> using namespace std; const i ...
分类:
编程语言 时间:
2016-08-31 10:32:31
阅读次数:
339
将所有点按横坐标排序,那么最长上升子序列和最长下降子序列里必有一个长度不小于$\sqrt{n}$。 因为如果最长上升子序列很短,那么根据Dilworth定理,它的反链长度与它成反比。 因此可以将$n$个点划分为不超过$\sqrt{n}$条链或者反链,每一个部分里都相当于只有一维坐标。 对于每一个部分 ...
分类:
其他好文 时间:
2016-08-19 20:48:05
阅读次数:
173
Description A sequence of N positive integers (10 < N < 100 000), each of them less than or equal 10000, and a positive integer S (S < 100 000 000) ar ...
分类:
其他好文 时间:
2016-08-19 16:22:10
阅读次数:
291
int max_sum(int *arr,int len)
{
assert(arr);
assert(len > 0);
int sum=0;
int key=-INT_MAX;
for(int i=0; i<len; ++i)
{
if(sum = key)
...
分类:
编程语言 时间:
2016-08-14 13:12:21
阅读次数:
152