UVA 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;…
题目链接: 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的长度? /*…
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1576 题意 两个元素互不相同(在自身数列中互不相同)的数列,求二者的LCS. 思路 如刘书, 非常棒的思路: 1. 明显LCS问题只要关注两个数列的交集,利用第一个数列a的元素,对第二个数列b中的元素重编号(b元素中没有出现在a数列中的可以忽略)问题就转化为最长上升子序列问题. 2.…
题目链接: 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…
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1576 题目大意: 有两串长度分别为p+1和q+1的序列,每个序列中的各个元素互不相同,且都是1~n*n之间的整数,两个序列的第一个元素是1,求A和B的最长公共子序列长度. 思路: 求LCS的经典解法时间复杂度为O(P*Q),而p和q可能为250*250=62500. 因为A序列中的所有元素均…
两个长度分别为p+1和q+1的由1到n2之前的整数组成的序列,每个序列的元素各不相等,两个序列第一个元素均为1.求两个序列的最长公共子序列 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1576 LCS的复杂度为O(p∗q),这题p,q最大为250 * 250,必T无疑. 注意题目说的每个序列的元素各不相等,那么就能保证我们可以把序列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,…
图片加载可能有点慢,请跳过题面先看题解,谢谢 这道题... 还是要点思维的... 第一眼看是个最长公共子序列,但是, \(N\le 62500\) ,并不能 \(O(n^2)\) 求 $ $ 这道题有个很好的性质,每个序列中的元素互不相同 也就是说,在一个序列中,每一个数字都有一个唯一的位置 这有什么用? $ $ 我们进行这样一个操作,把 \(b\) 序列中的数字换成该数字在 \(a\) 序列中出现的位置,那么问题就变成了一个求 \(b\) 序列的 \(LCS\) 的问题了 这样我们就可以在 \…
直接LCS是时间复杂度是O(p*q)的,但是序列元素各不相同,只要把其中一个序列映射成有序的, 另外一个序列再做相同的映射,没有的直接删掉,就变成了求另一个序列LIS. #include<bits/stdc++.h> using namespace std; int read() { '); '; +c-'; return re; } *; int mp[maxn]; int S[maxn],g[maxn]; //#define LOCAL int main() { #ifdef LOCAL…
题意:有两个长度分别为p+1和q+1的序列,每个序列中的各个元素互不相同,且都是1~n2的整数.两个序列的第一个元素均为1.求出A和B的最长公共子序列长度. 分析: A = {1,7,5,4,8,3,9},B = {1,4,3,5,6,2,8,9}. 1.A中元素各不相同,因此将A中序列重新编号为1~p+1,即A中每个元素在A中是第几个出现的. 2.按照A中制定的编号原则给B重新编号,则B为{1,4,6,3,0,0,5,7},0表示这些元素在A中没有出现过. 3.新的A和B的LCS实际上就是新的…
题目大意:有n*n个方格,王子有一条走法,依次经过m个格子,公主有一种走法,依次经过n个格子(不会重复走),问他们删去一些步数后,重叠步数的最大值. 显然是一个LCS,我一看到就高高兴兴的打了个板子上去,结果TLE+RE. 仔细一看:n<=250,那么二维数组就得开250*250*250*250了,显然RE了. 所以我想着用滚动数组来存储,但是TLE又拦住了我的去路. O(n^2)的效率就是62500*62500,大于10^8,所以1s之内完不成,所以要想别的办法. 偶然在网上找到了O(nlog…
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…
题目 In an n * 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 square 1, make p jumps and finally reach square n*n. He enters a square at most once. So if we u…
题目 传送门:QWQ 分析 水题.$ O(nlogn) $的LCS 代码 #include <bits/stdc++.h> using namespace std; *, INF=1e9; int S[maxn], g[maxn], d[maxn]; int num[maxn]; int main(){ int T; scanf("%d",&T); ;kase<=T;kase++){ int N,p,q,x; scanf("%d%d%d",…
题目连接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1576 13935381 10635 Prince and Princess Accepted C++ 0.095 2014-07-24 03:41:18 Prince and PrincessInput: Standard Input Output: Standard Output…
Prince and Princess Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1267    Accepted Submission(s): 358 Problem Description There are n princes and m princesses. Princess can marry any prince. B…
Prince and Princess Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 2336    Accepted Submission(s): 695 Problem Description There are n princes and m princesses. Princess can marry any prince. B…
Prince and Princess 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4685 Description There are n princes and m princesses. Princess can marry any prince. But prince can only marry the princess they DO love. For all princes,give all the princesses tha…
Prince and Princess Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 150    Accepted Submission(s): 46 Problem Description There are n princes and m princesses. Princess can marry any prince. But…
Prince and Princess Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 2281    Accepted Submission(s): 677 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4685 Description: There are n princes and m…
一个时间效率为o(nlogn)的算法求公共子序列的应用 Prince and princess 题目大意(已翻译 ) 在nxn的棋盘上,王子和公主玩游戏.棋盘上的正方形编号为1.2.3 ... n * n,如下所示:Prince站在正方形1中,进行p跳跃,最后到达正方形n * n.他最多只能进入一个广场.因此,如果我们使用xp表示他输入的第p个平方,则x1,x2,... xp + 1都不同.注意,x1 = 1,xp + 1 = n * n.公主做类似的事情-站在方格1中,使q跳,最后到达方格n…
嘤嘤嘤,我又来了,刚A完就写,这个沙雕题有丶恶心.                  ???时间4.11发现所有表情包都莫得了 题目: In an n×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 square 1, make p jumps and…
题目的本意是求LCS,但由于每个序列的元素各不相同,所以将A序列重新编号{1,2,,,p+1},将B序列重新编号,分别为B中的元素在A中对应出现的位置(没有的话就是0). 在样例中就是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 0 5 7}(里面的0在求LIS时可以忽略) 这样求A.B的LCS就转变为求B的LIS 求LIS用二分优化,时间复杂度为O(nlogn) 第一次…
题目戳这里 这题如果用\(f_{i,j}\)这样dp的话肯定过不了,必须另辟蹊径.题目说了数字不重复.我们先只留下两个数组共有的数字.然后我们处理出这样一个数组\(S\),\(S_i\)表示\(A_i\)这个元素在\(B\)中的下标,然后模型转换就成为了求\(S\)中最长上升子序列了,这个\(O(NlogN)\)的求法大家应该都会.这里我写的是树状数组版本的. #include<iostream> #include<cstdio> #include<cstdlib> u…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4685 题意:给出n个王子和m个公主.每个王子有一些自己喜欢的公主可以匹配.设最大匹配为M.那么对于每个王子,可以选择哪些自己喜欢的公主使得选择之后最大匹配仍为M? 思路:(1)首先,想到的一个方法是先求一次最大匹配.然后枚举每个王子喜欢的公主作为该王子的匹配,判断能否为之前匹配该公主的王子重新找到一个匹配.这样的复杂付太大. (2)改进:做法是先求一次最大匹配设为cnt,那么左边有n-cnt个王子还…
这个题就是建图费点劲,别的和我上一篇博客一样 然后,参考思路请戳这里http://www.cnblogs.com/wally/archive/2013/09/12/3317883.html 补充:这个思路是对的,然后请注意虚拟只和现实的连接,虚拟的不会和虚拟连接 这样可以保证如果在同一连通分量内,还会形成完美匹配,而且原最大匹配也不会有影响 #include <iostream> #include <cstdio> #include <cstdlib> #include…
题目大意 有两个长度分别为p+1和q+1的序列,每个序列中的各个元素互不相同,且都是1~n^2之间的整数.两个序列的第一个元素均为1.求出A和B的最长公共子序列长度. 题解 这个是大白书上的例题,不过这题真的很好,很考验思维.因为p和q都是250^2=62500,如果用LCS的话时间复杂度是O(pq),显然会超时....不过这题的两个序列很特殊,就是没有重复的元素,这样可以把A中的元素重新编号为1~p+1.然后B根据A也重新编号,这样,新的A和B的LCS实际上就是新的B的LIS.LIS可以在O(…