ENG  RUSTimus Online Judge
Online Judge
Problems
Authors
Online contests
About Online Judge
Frequently asked questions
Site news
Webboard
Links
Problem set
Submit solution
Judge status
Guide
Register
Update your info
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

Discussion of Problem 1203. Scientific Conference

Dmitriy What is DP solution? Thx [5] // Problem 1203. Scientific Conference 21 Sep 2016 13:50
Hi. I wonder, how can I solve it with dp? I thinked a whole day and cant find the solution less than O(N*T). Give me please some hint.
Oleg Baskakov Re: What is DP solution? Thx [3] // Problem 1203. Scientific Conference 21 Sep 2016 14:39
Just sort by endtime and use greedy. It's that easy.
Dmitriy Re: What is DP solution? Thx [2] // Problem 1203. Scientific Conference 22 Sep 2016 05:41
Why does it work? Can you prove that approach? I don't understand why it does work :(.
Egor Re: What is DP solution? Thx [1] // Problem 1203. Scientific Conference 14 Nov 2016 14:08
O(N * T)? What is 'T'?

This can be solved using greedy, but the O(N^2) DP solution is as follows:
1) Sort by start times

dp[i]: maximum events that can be attended

iterate from j = 0 to i-1, if end time of j-th conference is less than start time of i-th and dp[j] + 1 > dp[i] then dp[i] = dp[j] + 1

answer is max of all elements of dp array
silverfox Re: What is DP solution? Thx // Problem 1203. Scientific Conference 30 Apr 2022 18:16
You should save dp[max(end_time)];

remember that for each end time there maybe different start times so that (end - start) are different.

Save these segments, mp[end].push_back(end-start + 1);

now check from 1 to max(end_time) and for each i,

if i is end time? then check this segments sizes,

for each such segment  dp[i] = 1 + dp[i - s]; where s is saved segment sizes for end time 'i'.


https://pastebin.com/C3dagNL2

Edited by author 30.04.2022 18:18