avatar
Facebook Puzzle Gattaca# JobHunting - 待字闺中
b*n
1
我在实现gattaca时,Binary search化的时间很多.有什么方法可以优化?
avatar
b*n
2
我用binary search找last non-overlap.处理100,000的时候非常慢.
bestCost(x) = max(bestCost(last non-overlap) + x's cost, bestCost(x-1))
avatar
B*t
3
先按stop time对record排序, 然后从0到n-1依次找出包含的当前record的最大
score,用binary search找,同时update maxScore。 O(nlogn)
不用什么优化,169.209 ms on its longest test case

【在 b*****n 的大作中提到】
: 我在实现gattaca时,Binary search化的时间很多.有什么方法可以优化?
avatar
p*7
4
我看到那么长的题就头疼
avatar
b*n
5
能PM一下这个source code 吗?
我就是这个需要很长时间.
avatar
h*6
6
这个方法好,我把我的帖子删掉了。
O(nlogn)的复杂度,对于100,000级别的输入来说,应该能在1秒钟之内完成啊。

【在 B*****t 的大作中提到】
: 先按stop time对record排序, 然后从0到n-1依次找出包含的当前record的最大
: score,用binary search找,同时update maxScore。 O(nlogn)
: 不用什么优化,169.209 ms on its longest test case

avatar
p*7
7
这题用dp做,复杂度是多少? 感觉配上其他数据结构可以优化到N,具体怎么算我还没
想清楚

【在 h**6 的大作中提到】
: 这个方法好,我把我的帖子删掉了。
: O(nlogn)的复杂度,对于100,000级别的输入来说,应该能在1秒钟之内完成啊。

avatar
p*7
8
比如用一个hashtable存 ,关键字是stop
我们在建立一个value的表格,Value【i】表示最大从0到i的Value,i范围是0-99
遍历Valuetable
就查一次hashtable的stop,看i是否是stop,
如果是就获得start和score,
Value【i】 = max(score+Value[i-(stop-start+1)],Value[i-1]);
如果不是Value【i】=Value【i-1】;
复杂度就是N
avatar
b*n
9
需要NLogN时间找Value[i-(stop-start+1)]
avatar
p*7
10
这是个数组,获得数组元素还需要时间?

【在 b*****n 的大作中提到】
: 需要NLogN时间找Value[i-(stop-start+1)]
avatar
b*n
11
我说得不是很精确.对每一个元素,找前面的不重叠的元素需要nLogN时间.另外, 这道题还需要重新排序,也需要NLogN时间.

【在 p********7 的大作中提到】
: 这是个数组,获得数组元素还需要时间?
avatar
p*7
12
问题是用hashtable就不用啊,你看我之前写的那个算法,hashtable,查找的时候用
stop这个关键词,insert的时候把start,stop,value一起作为一个数据结构存了

题还需要重新排序,也需要NLogN时间.

【在 b*****n 的大作中提到】
: 我说得不是很精确.对每一个元素,找前面的不重叠的元素需要nLogN时间.另外, 这道题还需要重新排序,也需要NLogN时间.
avatar
b*n
13
没太理解
1 2 3 4
123456789012345678901234567890123456789012345
AGCTAGCTACGTACGATCGACGATCGATCGATGCATCATGCATCG
E0 |--------| Weight: 11
E1 |----| Weight: 5
E2 |-----------------| Weight: 13
E3 |----| Weight: 5
E4 |----| Weight: 5
E0 10 -> 1 11
E1 19 -> 14 5
E2 36 -> 18 13
E3 31 -> 2

【在 p********7 的大作中提到】
: 问题是用hashtable就不用啊,你看我之前写的那个算法,hashtable,查找的时候用
: stop这个关键词,insert的时候把start,stop,value一起作为一个数据结构存了
:
: 题还需要重新排序,也需要NLogN时间.

avatar
h*6
14
你们两位的n不一样,一个是个数,一个是值域。
avatar
p*7
15
我的算法不需要binary search,0-99遍历一次出结构,你说的N是8吧?
我说的N是100.

【在 b*****n 的大作中提到】
: 没太理解
: 1 2 3 4
: 123456789012345678901234567890123456789012345
: AGCTAGCTACGTACGATCGACGATCGATCGATGCATCATGCATCG
: E0 |--------| Weight: 11
: E1 |----| Weight: 5
: E2 |-----------------| Weight: 13
: E3 |----| Weight: 5
: E4 |----| Weight: 5
: E0 10 -> 1 11

avatar
b*n
16
明白了.

【在 p********7 的大作中提到】
: 我的算法不需要binary search,0-99遍历一次出结构,你说的N是8吧?
: 我说的N是100.

avatar
t*j
17
这道题题目是什么?麻烦楼主讲讲!

【在 b*****n 的大作中提到】
: 我在实现gattaca时,Binary search化的时间很多.有什么方法可以优化?
avatar
y*e
18
碰巧今天在做这个题目。说下我对这个题目的理解。
问题的输入是一个DNA(可以认为是一个字符串)。这个DNA上有一系列基因,每一个基
因有起始点,结束点,以及权重值。要求在这个DNA串里面,找出不重叠的所有基因,使
得它们的权重值总和最大。
举个例子:
DNA(长度是45):AGCTAGCTACGTACGATCGACGATCGATCGATGCATCATGCATCG
5个基因(起点,终点,权重):
E0: 1 10 11
E1: 14 19 5
E2: 18 36 13
E3: 26 31 5
E4: 35 40 5
E0没有与任何其他基因相交。E2与E1,E3,E4相交。E1,E3,E4并不互相重叠。依题意,
符合条件的基因组合是E0,E1,E3,E4,权重总和是26,是最大的可能组合。
题目的链接在这里:http://www.facebook.com/careers/puzzles.php?puzzle_id=15
值得注意的是,DNA的具体值并不重要,只需要它的长度就可以了。
我最开始用Dynamic Program

【在 t*****j 的大作中提到】
: 这道题题目是什么?麻烦楼主讲讲!
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。