競技プログラミング用 知識集積所

ARC203A - All Winners

最終更新:

sport_programming

- view
管理者のみ編集可


問題


必要知識

簡単な内容は省略
  • 特になし

考え方

全勝賞を最も多くもらったチームではk人がもらっているとする。
すると、他のチームは全てk人以上が全勝賞を逃す。
よって、他のチームの全勝賞は、最大でmin(k,m-k)人である。

一方、どのチームもmin(k,m-k)人以上は全勝賞を逃す人がいる。
よって、k人のチーム以外全チームmin(k,m-k)人が全勝賞をもらうことはありえる。

したがって、答えはkを変化させたときのk+(n-1)*min(k,m-k)の最大値である。

これは、mが偶数の場合はk=m/2のときのnk人である。
つまり、各チームの半分が全勝、各チームの半分が全敗のときである。

mが奇数の場合はk=(m-1)/2のときのkn/2+1人である。
つまり、各チームの半分(切り捨て)が全勝、各チームの半分(切り捨て)が全敗、各チームの残った1人ずつのうち1人だけ全勝のときである。

解答例


注意点


別解

ウィキ募集バナー