~~~~
由题意可知,因为左边是按1~n的顺序递增排列,要想得到不相交组合,左边后面的一定与相应右边后面的相连,如此一来,
就可以发现其实是一道最长上升子序列的题目,要注意的是N
题目链接:http://poj.org/problem?id=1631
~~~~
nlogn的算法在这里补充一下。
最长不下降子序列的O(nlogn)算法分析如下:
设 A[t]表示序...
分类:
其他好文 时间:
2014-08-03 23:26:56
阅读次数:
364
~~~~
求最长不上升子序列,把数组倒过来不就是求最长上升子序列了么,QAQ..
用的是nlogn算法,不清楚的请戳:http://blog.csdn.net/darwin_/article/details/38360997
题目链接:http://poj.org/problem?id=1887
~~~~
#include
#include
#include
#include
#defi...
分类:
其他好文 时间:
2014-08-03 23:25:26
阅读次数:
309
简单dp题,LIS。不同之处是这里要求得的不是最长的子序列,而是权重和最长的子序列。其实大同小异。
状态数组就是到达每个位置的最大权重。
LIS问题常用解法就是两个:
人人为我
我为人人...
分类:
其他好文 时间:
2014-08-03 23:16:16
阅读次数:
277
这半个多月一来,主要是在刷DP。开始是一些简单的DP(可是我没有感觉有多简单=_=!!),然后是最大连续子序列,最大公共子序列,最大子矩阵等等,这些题目还好,有的题目甚至可以模板化。还有一些没有解决的难题:1024 Max Sum Plus Plus 最大m段不重叠子段和](可不连续)1244 Ma...
分类:
其他好文 时间:
2014-08-03 23:13:46
阅读次数:
262
最大子数组问题定义 给定整数A1, A2, …, An(其中可能是负数),求k的最大值和序列的起始位置(为了方便起见,如果所有整数均为负数,则最大子序列和为0),使用四种算法(根据运行时间区分)解决这个问题。运行时间为θ(n3) 使用了三个for循环,在最坏情况下,运行时间为θ(n3)C语言实现代码...
分类:
其他好文 时间:
2014-08-03 17:59:35
阅读次数:
263
题意:给你长为n的序列 ,每个节点都和在它前面且值比他大的点产生一条边,问你一个最大 两两点没有边的集合的 集合元素有多少解题思路:想了半天才发现是最长上升子序列。。解题代码: 1 // File Name: 340d.cpp 2 // Author: darkdream 3 // Created ...
分类:
其他好文 时间:
2014-08-03 17:45:05
阅读次数:
204
本题的题意理解之后,就是求最长回文子序列 longest palindrome subsequence,这里注意子序列和子串的区别。
有两种求法,一种是直接求,相当于填矩阵右上对角阵,另一种是转化为longest common subsequence的求法。
最大难点就是要求内存不能使用二维的。 故此第一种方法是有点难度的,因为需要把二维矩阵的对角线转化为一维表记录,对好下标就好了。
第二中...
分类:
其他好文 时间:
2014-08-02 23:32:34
阅读次数:
326
~~~~
两道题的意思差不多,HDU上是求最长上升子序列的和,而POJ上就的是其长度。
貌似还有用二分写的nlogn的算法,不过这俩题n^2就可以过嘛。。
~~~~
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1087
http://poj.org/problem?id=2533
~~~~
HDU1087:
#include...
分类:
其他好文 时间:
2014-08-02 23:30:15
阅读次数:
243
有一个正整数序列,求最短的子序列使得其和大于等于S,并输出最短的长度。用数组b[i]存放序列的前i项和,所以b[i]是递增的。遍历终点j,然后在区间[0, j)里二分查找满足b[j]-b[i]≥S的最大的i,时间复杂度为O(nlongn)。这里二分查找用到库函数lower_bound() 1 //#...
分类:
其他好文 时间:
2014-08-02 23:20:54
阅读次数:
269