公式

A - Annual Tuition 解説 by kencho

解説

この問題を解く最もnaiveな方法として、京都大学を含む \(N+1\) 校の学費を \(0, 1, 2, 3 \cdots\) 年後についてそれぞれ求め、比較するというものが考えられますが、\(N\) の上限は \(5 \times 10^5\) と大きく、京都大学が最も学費の安い大学となる年が約 \(10^9\) 年先になるケースも制約の範囲内で考えられるため、この方法では TLE を避けるのは困難です。

そこで、京都大学と別の大学 \(1\) 校の学費を比較し、京都大学の方が学費が安くなる(または同じになる)期間を求めた上で、\(N\) 個の期間の共通部分が存在するかどうか考えます。

比較対象の別の大学( \(C\) 大学とする)の今年の学費を \(A\) 円とし、毎年 \(B\) 円ずつ上がっていくとしましょう。

\(Y \lt B\) のとき

  • \(X \le A\) であれば、今年以降常に京都大学の学費は \(C\) 大学の学費以下になるため、 \(C\) 大学を考慮する必要はありません。
  • \(X \gt A\) のとき、京都大学の学費が \(C\) 大学の学費以下になる年は、\(\lceil \frac{X-A}{B-Y} \rceil\) 年後以降の全ての年となります。

\(Y = B\) のとき

  • \(X \le A\) であれば、今年以降常に京都大学の学費は \(C\) 大学の学費以下になるため、 \(C\) 大学を考慮する必要はありません。
  • \(X \gt A\) であれば、今年以降京都大学の学費が \(C\) 大学の学費以下になることはありません。

\(Y \gt B\) のとき

  • \(X \le A\) であれば、京都大学の学費が \(C\) 大学の学費以下になる年は、今年から \(\lfloor \frac{A-X}{Y-B} \rfloor\) 年後までの全ての年となります。
  • \(X \gt A\) であれば、今年以降京都大学の学費が \(C\) 大学の学費以下になることはありません。

以上の条件にしたがって、各校について期間を求めた上で、期間の下限の最大値が、期間の上限の最小値以下であれば、またその時に限り、京都大学が国内で最も学費の安い大学となる年が存在することになります。計算量は \(O(N)\) です。

投稿日時:
最終更新: