s*****l 发帖数: 45 | 1 见过的题目就不说了,说个没见过的,基本是这题把俺放倒了,大牛们可以看看怎么做
。
河对岸有两排数量相等的城市。
a1 a2 a3 a4.....an
-------------------
-------------------
b1 b2 b3 b4.....bn
每个城市ai都有对应的友好城市bj. 比如(a1, b3), (a2, b1), (a3, b2)...
问题是如果姐妹城市之间可以互相建桥,但是这些桥之间不能交叉,给定这些姐妹城市
的mapping, 最多可以建多少个桥? |
s******y 发帖数: 416 | 2 什么叫给定mapping?
目测是图论问题。planer graphs。可能是结论直接用就可以了。 |
a*****u 发帖数: 1712 | 3 dp,跟longest common subsequence一个思路 |
z***c 发帖数: 78 | 4 这个要用贪婪算法吧,感觉和排时间表很像
先找出最靠左边的一组(Ai,Bj),然后相同方法找下一组A[max(i,j)+1],B[max(i,j)+1]
至于怎么找到最左边的,目前想到的是可以按照max(Ai,Bj)排序 |
A***o 发帖数: 358 | 5 a_i 到 b_j是一一对应吗?
感觉好像是要把 a 按在 b 中的位置排序,然后找排序后a下标的最长递增序列
【在 s*****l 的大作中提到】 : 见过的题目就不说了,说个没见过的,基本是这题把俺放倒了,大牛们可以看看怎么做 : 。 : 河对岸有两排数量相等的城市。 : a1 a2 a3 a4.....an : ------------------- : ------------------- : b1 b2 b3 b4.....bn : 每个城市ai都有对应的友好城市bj. 比如(a1, b3), (a2, b1), (a3, b2)... : 问题是如果姐妹城市之间可以互相建桥,但是这些桥之间不能交叉,给定这些姐妹城市 : 的mapping, 最多可以建多少个桥?
|
s*****l 发帖数: 45 | 6 回楼上的,给定mapping就是说给定这些a和b的友好城市关系了。
ai到bj是一一对应的 |
s***5 发帖数: 2136 | 7 用greedy怎么样?先看所有pair都建桥的话,有多少个交叉。然后remove那个能最大限
度减少交叉次数的桥,重复此过程直到没有交叉为止。
不过不能保证就是最佳结果。
可能要用DP?不过不知怎么搞。 |
l****o 发帖数: 315 | 8 看到最大先想到dp
f[i,j] = max{f[i - 1, j], f[i, j - 1]} + 1 (if [i,j] has mapping)
还能降一维空间。
瞎想的,可能不对。 |
s***5 发帖数: 2136 | 9 实在看不出怎么一样法。
【在 a*****u 的大作中提到】 : dp,跟longest common subsequence一个思路
|
a*****u 发帖数: 1712 | 10 你这个跟我说的方法都是对的。
【在 A***o 的大作中提到】 : a_i 到 b_j是一一对应吗? : 感觉好像是要把 a 按在 b 中的位置排序,然后找排序后a下标的最长递增序列
|
|
|
a*****u 发帖数: 1712 | 11 longest common subsequence里的两char相等,对应这道题的两城市有mapping
【在 s***5 的大作中提到】 : 实在看不出怎么一样法。
|
a*****u 发帖数: 1712 | 12 我刚刚说错了,是subsequence,不是substring
【在 s***5 的大作中提到】 : 实在看不出怎么一样法。
|
c***d 发帖数: 26 | 13 哇这个解法妙。
如果推广到每个城市可以有多个友好城市,那似乎就只能dp了。
【在 A***o 的大作中提到】 : a_i 到 b_j是一一对应吗? : 感觉好像是要把 a 按在 b 中的位置排序,然后找排序后a下标的最长递增序列
|
i*****o 发帖数: 105 | 14
非一一对应也行
这问题比较有意思
【在 A***o 的大作中提到】 : a_i 到 b_j是一一对应吗? : 感觉好像是要把 a 按在 b 中的位置排序,然后找排序后a下标的最长递增序列
|
s***5 发帖数: 2136 | 15 这个很好理解,很不错。
【在 A***o 的大作中提到】 : a_i 到 b_j是一一对应吗? : 感觉好像是要把 a 按在 b 中的位置排序,然后找排序后a下标的最长递增序列
|
z***c 发帖数: 78 | |
r*****e 发帖数: 792 | 17 mit的那个dp讲解里有这道题,连桥和城市的说服都一样。
【在 s*****l 的大作中提到】 : 见过的题目就不说了,说个没见过的,基本是这题把俺放倒了,大牛们可以看看怎么做 : 。 : 河对岸有两排数量相等的城市。 : a1 a2 a3 a4.....an : ------------------- : ------------------- : b1 b2 b3 b4.....bn : 每个城市ai都有对应的友好城市bj. 比如(a1, b3), (a2, b1), (a3, b2)... : 问题是如果姐妹城市之间可以互相建桥,但是这些桥之间不能交叉,给定这些姐妹城市 : 的mapping, 最多可以建多少个桥?
|
g***9 发帖数: 159 | 18 贴个DP的完整代码给大家讨论,测了几个case感觉是对的解法,简单原理:
假设a1,a2 ... an 和 b1,b2...bn 都在 1.. n之间,便于讨论
table[i][j] 表示了只包含从 a1..ai 到 b1..bj 作为桥端点的结果
rev 是逆向映射。
DP是假设了ai bj是一一对应,不知道有重复映射的话,怎么做比较好?
有么有人能贴个排序的代码?谢谢
#include
#include |
n****r 发帖数: 120 | 19 假设输入为数组A[],B[]为mapping,A数组升序排列,一一对应,直接对B数组求
longest increasing subsequence 就是答案了吧 |
s*******s 发帖数: 1031 | 20 http://people.csail.mit.edu/bdean/6.046/dp/
第5题。
【在 s*****l 的大作中提到】 : 见过的题目就不说了,说个没见过的,基本是这题把俺放倒了,大牛们可以看看怎么做 : 。 : 河对岸有两排数量相等的城市。 : a1 a2 a3 a4.....an : ------------------- : ------------------- : b1 b2 b3 b4.....bn : 每个城市ai都有对应的友好城市bj. 比如(a1, b3), (a2, b1), (a3, b2)... : 问题是如果姐妹城市之间可以互相建桥,但是这些桥之间不能交叉,给定这些姐妹城市 : 的mapping, 最多可以建多少个桥?
|
|
|
r*********n 发帖数: 4553 | |
S*********d 发帖数: 16 | 22 如果是一一对应的这题直接用longest common subsequence 不对吗? |
S*********d 发帖数: 16 | 23 如果是一一对应的这题直接用longest common subsequence 不对吗? |
S*********d 发帖数: 16 | |
h****g 发帖数: 105 | 25 这题和cc150 1.9是一样的吧?1.9上是说人有两个属性,体重和身高,然后人排队要求
前面的人的身高和体重都小于后面的,问最多的可排队的人数。 |
w***t 发帖数: 1474 | 26 跟我想的一样,其实就是一道题。
【在 h****g 的大作中提到】 : 这题和cc150 1.9是一样的吧?1.9上是说人有两个属性,体重和身高,然后人排队要求 : 前面的人的身高和体重都小于后面的,问最多的可排队的人数。
|
c********p 发帖数: 1969 | |
f******p 发帖数: 173 | 28 2 this, have the same idea
【在 n****r 的大作中提到】 : 假设输入为数组A[],B[]为mapping,A数组升序排列,一一对应,直接对B数组求 : longest increasing subsequence 就是答案了吧
|