SRM645 DIV1

0pt
Rate: 1243->1263

1年半ぶりの参加らしい。が、0完でつらい。

250. JanuszTheBusinessman

解けなかった。


出会える人のグラフを作って、そのグラフの中で頂点集合を選んで、その頂点と隣接頂点がグラフすべての頂点をカバーしているような最小の頂点集合を求める問題、と考えてしまったけど、これは最小支配集合問題のようで、NP困難。

考え方

一番出発が速い人を考えると、その人が出発するまでにプロモ対象者と接触しないといけない。言い換えれば、「その人か、その人の滞在中に会う人の中」からプロモ対象者を選んでいなければいけない。
この対象者を選ぶには、「一番滞在時間が遅い人を選んだ方がカバーしている日数が多い」ので、そんな人を選んだほうがよい。
選ばれた対象者が滞在中に会う人は、プロモされることになる。
同様に、プロモされていない、かつ、次に出発が速い人について、処理を繰り返す。

反省

グラフにしてしまうと、条件を無視してより難しい問題を解くことになってしまう。
貪欲法だとしても、区間スケジュール問題とかで、終了時刻が速いものから処理を繰り返す」など、ヒントが考えられる。直感と合ってて、反例がないようにアルゴリズムが考えられればよい、、けどそれが難しい。。。