C - MAD TEAM Editorial by kyopro_friends


問題を次のように変更しても答えは変わりません

(前略)
チーム全体のパワーをチームメンバーの誰かのパワーで定義します。スピード・テクニック・知識・発想力についても同様に定義します。
(後略)

変更したあとの問題を考えてみましょう。

ある人のパワーをチーム全体のパワーとするとき、その人のパワーを採用すると呼ぶことにします。他の能力についても同様に定義します。

チームメンバーからどの能力を同時に採用するかを全探索します。即ち例えば「1人目からはパワー・スピードを、2人目からはテクニック・知識を、3人目からは発想力を採用する」というような割り当て方を全探索することを考えます。

上の例のように、パワー・スピードを採用すると決めた場合に選ぶべきメンバーは、min(パワー,スピード)が最大であるような人です。したがってこれは、適切な前計算の下で \(O(1)\) で求めることができます。

(なお、1人目として採用するべきメンバーと、2人目として採用するべきメンバーが重複してしまっても問題はありません。なぜならこのときは、上の例でいうなら「1人目からパワー・スピード・テクニック・知識を、3人目からは発想力を採用し、2人目からは何も採用しない」と同じことだからです)

能力値の種類を \(M\) 、チームの人数を \(K\) としたとき、計算量は \(O\left(N2^M+\frac{K^M}{K!}\right)\) となります。

posted:
last update: