10635 - Prince and Princess】的更多相关文章

题目连接:10635 - Prince and Princess 题目大意:给出n, m, k,求两个长度分别为m + 1 和 k + 1且由1~n * n组成的序列的最长公共子序列长的. 解题思路:按一般的o(n^2)的算法超时了,所以上网查了下LCS装换成LIS的算法o(nlogn).算法仅仅是将其中的一个序列重新标号1~m,然后按最长公共子序列的方法去做. #include <stdio.h> #include <string.h> const int N = 90000;…
Problem D Prince and Princess Input: Standard Input Output: Standard Output Time Limit: 3 Seconds In an n x n chessboard, Prince and Princess plays a game. The squares in the chessboard are numbered 1, 2, 3 ... n*n, as shown below: Prince stands in s…
题目链接: http://bak.vjudge.net/problem/UVA-10635 Prince and Princess Time Limit: 3000MS 题意 给你两个数组,求他们的最长公共子串. 题解 每个数组的大小最大有62500,所以n^2的经典算法肯定行不通. 那么,我么就需要找突破口:这题和一般的最长公共子串问题有什么不同,题目告诉我们每个数字只出现一次.明显要在这上面做文章!由于每个数位子固定了,所以匹配是唯一的,(pos1,pos2)表示数x在a数组中的位置,在b数…
讲一下题目大意,就是有两个长度为p + 1和q + 1的序列,求它们的LCS. 如果用O(pq)的算法对于这道题来说还是太慢了.所以要另外想一些方法.注意到序列中的所有元素都不相同,所以两个序列中数对应的位置都是唯一的,就用第一个序列的元素对第二个序列的元素进行重新编号,记录它们在第一个序列中出现的位置(如果不存在就随便记一个不能达到的值),不存在的话就说明它们对LCS没有贡献.那么看张图: 如果不能明白,那..看张反例: 有没有发现LCS的长度就是第二个序列的LIS的长度? /** * uva…
讲一下题目大意,就是有两个长度为p + 1和q + 1的序列,求它们的LCS. 如果用O(pq)的算法对于这道题来说还是太慢了.所以要另外想一些方法.注意到序列中的所有元素都不相同,所以两个序列中数对应的位置都是唯一的,就用第一个序列的元素对第二个序列的元素进行重新编号,记录它们在第一个序列中出现的位置(如果不存在就随便记一个不能达到的值),不存在的话就说明它们对LCS没有贡献.那么看张图: 如果不能明白,那..看张有关不合法情况的图: 有没有发现LCS的长度就是第二个序列的LIS的长度? /*…
题目链接: http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=19051 题意: 有两个长度分别为p+1和q+1的由1到n2之前的整数组成的序列,每个序列的元素各不相等,两个序列第一个元素均为1.求两个序列的最长公共子序列. 分析: LCS的复杂度为O(p∗q),这题p,q最大为250 * 250,必T无疑. 注意题目说的每个序列的元素各不相等,那么就能保证我们可以把序列A的元素用1到p+1重新进行赋值,把B中元素根据A…
题意描述:有两个长度分别为p+1和q+1的序列,每个元素中的各个元素互不相同.都是1~n^2之间的整数,求A和B的最长公共子序列.(2<=n<=250,1<=p,q<=n^2) 分析:本题是LCS问题,但因为p和q可以高达250^2=62500,O(pq)的算法显然太慢.注意到A序列中所有元素互不相同,因此可以把A中的元素重新编号为1~p+1.这样新的A和B的LCS实际上就是B的LIS.可以在O(nlogn)时间内解决. #include<cstdio> #includ…
标题效果:有两个长度p+1和q+1该序列.的各种元素的每个序列不是相互同.并1~n^2之间的整数.个序列的第一个元素均为1. 求出A和B的最长公共子序列长度. 分析:本题是LCS问题,可是p*q<=62500,O(pq)的算法显然会LE.在这里有一个条件,每一个序列中的各个元素互不同样,所以能够把A中元素又一次编号为1~p+1.比如,例子中A={1,7,5,4,8,3,9},B={1,4,3,5,6,2,8,9}.因此把A又一次编号为{1,2,3,4,5,6,7}.则B就是{1,4,6,3,0,…
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1576 题意 两个元素互不相同(在自身数列中互不相同)的数列,求二者的LCS. 思路 如刘书, 非常棒的思路: 1. 明显LCS问题只要关注两个数列的交集,利用第一个数列a的元素,对第二个数列b中的元素重编号(b元素中没有出现在a数列中的可以忽略)问题就转化为最长上升子序列问题. 2.…
图片加载可能有点慢,请跳过题面先看题解,谢谢 这道题... 还是要点思维的... 第一眼看是个最长公共子序列,但是, \(N\le 62500\) ,并不能 \(O(n^2)\) 求 $ $ 这道题有个很好的性质,每个序列中的元素互不相同 也就是说,在一个序列中,每一个数字都有一个唯一的位置 这有什么用? $ $ 我们进行这样一个操作,把 \(b\) 序列中的数字换成该数字在 \(a\) 序列中出现的位置,那么问题就变成了一个求 \(b\) 序列的 \(LCS\) 的问题了 这样我们就可以在 \…