请教一题,关于interval# JobHunting - 待字闺中r*h2013-06-23 07:061 楼有N个interval,每个有单独的startTime, endTime和cost找一个subset,使得其中的interval互不相交,且cost最大这题感觉不能用greedy呀。。难道只能枚举所有的子集吗?
r*e2013-06-23 07:062 楼好像去年f的onsite问过这题,当时花了些时间想,最后用dp解的,不知道是不是最优解但面试官认可了我的解法。不过那一轮只做了一道题,之前没见过这题。【在 r**h 的大作中提到】: 有N个interval,每个有单独的startTime, endTime和cost: 找一个subset,使得其中的interval互不相交,且cost最大: 这题感觉不能用greedy呀。。难道只能枚举所有的子集吗?
r*h2013-06-23 07:063 楼能说一下dp的思路吗?我的想法是,先按照结束时间sort每个interval,然后使用dp[i][j], start[i][j], end[i][j]分别存第i个到第j个interval的最大cost,最优解的开始时间和结束时间合并的时候先看两半dp[i][k]和dp[k+1][j]是否有intersection,如果没有的话就加起来更新对应的开始和结束时间dp[i][j] = max(dp[i][j], dp[i][k]+dp[k+1][j])不知道这样是否可以呢【在 r*****e 的大作中提到】: 好像去年f的onsite问过这题,当时花了: 些时间想,最后用dp解的,不知道是不是最优解但面试官认可了我的解法。: 不过那一轮只做了一道题,之前没见过这题。
h*i2013-06-23 07:067 楼是,跟longest increasing sequence结构一样.【在 p*****2 的大作中提到】: 怎么感觉像是O(n^2)时间,O(n)空间的DP呀。
x*w2013-06-23 07:0613 楼CLRS上greedy那章的课后题,不能用greedy,只可以DP【在 r**h 的大作中提到】: 有N个interval,每个有单独的startTime, endTime和cost: 找一个subset,使得其中的interval互不相交,且cost最大: 这题感觉不能用greedy呀。。难道只能枚举所有的子集吗?
j*n2013-06-23 07:0614 楼This problem is called 'weighted activity selection', you can only use DP tosolve it, greedy can only solve 'activity selection', or the un-weightedversion.