题目:uva10635Prince and Princess(LIS)
题目大意:求最长相同公共子序列。
解题思路:因为数据很大,62500不能用之前的那种求LIS的做法来做。可以将第一个路线的整数重新排个序(0...p),然后之后的那个路线因为要找相同的最长子序列,所以要将它原来的数字映射成第一条路线新的数字。这样之后就只需要找第二个路线的LIS就可以了。
nlog(n)...
分类:
其他好文 时间:
2014-08-13 22:26:17
阅读次数:
229
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=773思路:最近学习二分思想和三分思想,三分还是不太会。这个题可以用二分思想做。代码#include #include int n;double p;int cal(double a)//计算...
分类:
其他好文 时间:
2014-08-13 21:45:37
阅读次数:
347
最大子矩阵是一种典型的dp问题。某种程度上说是最大连续子序列和问题的扩展。这里选取了两个HDU上的最大子矩阵和问题来解读。...
分类:
其他好文 时间:
2014-08-13 19:06:17
阅读次数:
168
最大连续子序列和问题
给定k个整数的序列{N1,N2,...,Nk },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1
注:为方便起见,如果所有整数均为负数,则最大子序列和为0。
解决这样一个问题是一个很有趣的过程,我们可以尝试着从复杂度比较高的算法一步一步地推出复杂度较低的算法。
算法一:
时间复杂度:O(N^3)...
分类:
其他好文 时间:
2014-08-13 19:06:07
阅读次数:
439
47.创新工场(算法):求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}思路:动态规划从最后一个数字开始,计算以当前数字其实的序列的最长递减子序列。 每次找最长子序列,都扫描它之前求得的子序列中最长,且第一个数字比当前数字小的。如: 第一个....
分类:
其他好文 时间:
2014-08-13 17:49:46
阅读次数:
231
最长上升子序列就是求给定序列的最长的递增序列,其中不要求序列的元素在原序列中保持连续。
为了方便理解,可以举个例子:
inta[] = {0,2,1,5,3,6,4,8,9,7}(数组下标从1开始)的一个最长的子序列1,3,4,7,9。
利用动态规划的思想,可以方便的求取这个解。
为了方便解释,我们定义dp(n)为长度为1至下标为n的最长子序列的长度(数组下标假设从1开始),{a[1],a...
分类:
其他好文 时间:
2014-08-13 14:55:17
阅读次数:
195
最开始的时候思路就想错了,就不说错误的思路了。因为这n个数的总和是一定的,所以在取数的时候不是让自己尽可能拿的最多,而是让对方尽量取得最少。记忆化搜索:d(i, j)表示原序列中第i个元素到第j个元素构成的子序列,先手取数能够得到的最大值。sum(i, j) 表示从第i个元素到第j个元素的和因为要让...
分类:
其他好文 时间:
2014-08-13 12:47:56
阅读次数:
247
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=744标准水题目。。找规律即可。。题解:找规律水题,任取两组数即可,如4,8。计算得这个区间异或最大值为7^8=15=(1111)2=2^4-1;再任意找一组数2,6,计算得这个区间异或最大值...
分类:
其他好文 时间:
2014-08-13 12:33:46
阅读次数:
156
典型的DP题目,增加一个额外要求,输出子序列的开始和结尾的数值。
增加一个记录方法,nothing special。
记录最终ans的时候,同时记录开始和结尾下标;
更新当前最大值sum的时候,更新开始节点。
const int MAX_N = 10001;
long long arr[MAX_N];
int N, sta, end;
long long getMaxSubs()
{
...
分类:
其他好文 时间:
2014-08-12 22:04:14
阅读次数:
320
题目大意:给你一个0/1/2序列Ai,每个值Ai有一个权值Pi。如果两个值的权值Pi和Pj满足Pi≥2Pj,那么Ai就会把Aj吔掉,也就是说Ai,Aj不能共存。称Ai的一个子序列的特征三元组为(Sum0,Sum1,Sum2),其中Sump为子序列中的Ai=p的个数。当然这里要求所有值可以共存。求:A...
分类:
其他好文 时间:
2014-08-12 21:57:35
阅读次数:
551