LiveArchive 6905 Two Yachts

問題

https://icpcarchive.ecs.baylor.edu/external/69/6905.pdf

2隻の船がある。また、(船の運用期間, 得られる金額) のペアで表された企画がN個与えられる。
2隻の船だけを用いて運用できるようなスケジューリングをして、得られる金額の総和を最大化せよ。
同じ企画を2度以上採用することはできない。
1 \le n \le 10, 000
1 \le s \le t ≤ 10, 000, 000
1 \le p \le 100, 000

続きを読む

LiveArchive 6904 Travel Card

問題

何日目に対して、バスに乗る回数と電車に乗る回数が与えられる。
バス、電車それぞれに1回乗る券の他に、
1日バス乗り放題券、1日バス・電車乗り放題券
7日バス乗り放題券、7日バス・電車乗り放題券
30日バス乗り放題券、30日バス・電車乗り放題券
が存在する。それぞれ値段が決まっている。
N日間のバスと電車の乗る回数の予定が与えられるので、費用を最小化せよ。
N\ \le\ 10000

続きを読む

重み付き区間スケジューリング

まずは蟻本から

Intervals (POJ No.3680)

N個の重み付き閉区間がある。i番目の区間(a_i, b_i)をカバーし、重みw_iを持つ。この中からk個より多くの区間で覆われている点が存在しないように幾つかの区間を選び、重みの和を最大化せよ。

K = 1の場合、N個の区間から互いに交差しないように選んだときの重みの和の最大値を求める問題(=区間グラフの最大重み安定集合問題, 重み付き区間スケジューリング)

区間グラフの最大安定集合問題
  • DPの日本語の式 (1)
  • DPの数式 (2)
  • DPのグラフ的解釈 (3a, 3b)
    • このようなグラフの (4) 問題を解いていると考えることができる。

どの点もK個より多くの区間で覆われない = (4)

このようなグラフにおけるv_0からv_{m-1}への1つの最短路のコストは、K=1の場合のDPで得られた値の符号を反転したものになる。

このグラフで、-w_iの重みをつけた辺をパスに含むことが区間iを選ぶことに対応する。したがって、この辺の容量を1とし、他の辺の容量を∞としたネットワークを考えれば、その流量Kv_0 - v_{m-1}フローはK個の集合の重みの和に対応する。よって、最小費用流のアルゴリズムで解くことができる。グラフに負の辺が含まれることより、負の辺に予め目一杯流しておく方式を取る。

続きを読む

Data Structures and Network Algorithms: 8.4 最小費用流

増加パスの概念は、より一般的なネットワークフローの問題に拡張できる。
Gを各辺[u, w]が容量とフローの1ユニットごとのコストcost(v, w)を持つグラフとする。
簡単のため、コストを歪対称的(skew symmetric)とする。すなわち (1)
フローfのコストは、(2)
フローは同じ流量を持つ全てのフローの中で最小のコストを持つとき、(3) であるという。
最小費用流問題とは、(4) である。

定理8.11

フローfは、(5)、またそのときに限り、費用最小である。

定理8.12

fを費用最小のフローとする。このとき (6) 、fにフローを増加して得られた (7) である。

補題8.4

費用最小増加法では、一連の増加パスは非減少のコストを持つ。

続きを読む

UoA練習会 2016 VC 035 メモ

Regionals 2014 :: Asia - Daejeon

B - 6895 Deduction

BruteForceっぽい

K - 6904 Travel Card

状態はバスと電車それぞれについて残り日数持つと良さそう。

L - 6905 Two Yachts

重み付き区間スケジューリングのフローのやつだ。