No.468 役に立つ競技プログラミング実践編
タグ : / 解いたユーザー数 72
作問者 :


Note
この問題はAdvent Calendar Contest Advent Calendar 2016 の18日目の記事として作問されました.予備知識
品質管理の手法として良く知られたものに「新QC7つ道具」と呼ばれるものがあります.
今回はその中の一つであるところの「アローダイアグラム法」にクローズアップしてみたいと思います.
「アローダイアグラム法」はプロジェクトを達成するために必要な作業の工数や順序関係を,
下図のように図形化することでボトルネックを調べたり効率よく進捗管理するために用いられる手法のことです.
プロジェクト全体のつながりを上図のように「結合点」と「作業」でつなぎ,各作業にはその作業に必要な時間を併記します.
結合点は,プロジェクト内における各取り組みや,マイルストーンとなる区切りなどを表します.
ある結合点から作業を開始するためには,その結合点に至るすべての作業が完了している必要があります.
例えば,ある取り組みと別の取り組みの完了時期を同期させたい場合などは,作業時間
(図中の結合点
時刻
各結合点ごとに最速でいつ着手できるか(最早結合点時刻)を求めることで,全体に必要な時間を計算でき,
また各結合点ごとに最悪でいつ着手しなければ全体に遅延を生じてしまうか(最遅結合点時刻)を求めることもできます.
最遅結合点時刻と最早結合点時刻が一致するということは,着手できるようになってすぐに着手しなければならないということなので,
その結合点が全体を律速していることを意味します.
そのような結合点を結ぶことで全体のボトルネックとなる工程(クリティカルパス)を明らかにすることができます.
問題文
さてあなたは今,のべ
のべ
プロジェクトには合計で
すべてのメンバー
自分の抱える作業は,すべて完全に並行にすすめることができると考えていいです.
(時刻
それぞれ時刻
もっとえらいひとがいかにも知りたいであろう以下の情報を,指定の要領で報告してください.
・プロジェクト全体の完了に必要な最短時間
・最短時間での完了を実現するうえで,余裕有りと見込めるのべ人員(クリティカルパス上に居ないのべ人員)の数の割合
入力
入力は全て整数であり,それぞれは以下の制約を満たす.
全体の連結性および,
また,作業のループは発生しない.
出力
ここで,
最後に改行してください。
サンプル
サンプル1
入力
8 12 0 1 3 1 2 7 1 3 2 2 4 1 3 4 6 2 6 4 3 5 1 4 6 2 4 5 0 4 7 4 6 7 2 5 7 4
出力
16 3/8
上の図のケースです.
サンプル2
入力
5 4 0 3 3 3 1 2 1 2 3 2 4 1
出力
9 0/5
こういうケースです.
開始と完了はそれぞれ
サンプル3
入力
8 12 0 1 3 0 2 3 1 3 3 1 4 3 2 3 3 2 4 3 3 5 3 3 6 3 4 5 3 4 6 3 5 7 3 6 7 3
出力
12 0/8
パラで進んでいるように見えて,全員がクリティカルパスに乗っていることももちろんあります.
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。