Блог пользователя lcha

Автор lcha, история, 23 месяца назад, По-английски

There are N points and M segments, the ith point is located at p[i] and the ith segment's size is s[i]. What is the maximum number of points that can be covered by these segments?

My current solution is O(N * 2^M * M). Is there any better solution?

  • Проголосовать: нравится
  • +5
  • Проголосовать: не нравится

»
23 месяца назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by lcha (previous revision, new revision, compare).

»
23 месяца назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by lcha (previous revision, new revision, compare).

»
23 месяца назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

can you provide the link to the problem

»
23 месяца назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

I think you solution is something like this:

Let's sort points, then do this DP:

$$$dp(i, msk) =$$$ Maximum number of points $$$\leq p_i$$$, where $$$msk$$$ is a bitmask of used segments.

$$$dp(i, msk) = min(dp(i-1, msk), dp(lowerbound(i-sz_j), msk \oplus 2^j))$$$