AT_intro_heuristics_b Scoring
Description
[problemUrl]: https://atcoder.jp/contests/intro-heuristics/tasks/intro_heuristics_b
$ D $ 日分のコンテストの日程が与えられます。 各 $ d=1,2,\ldots,D $について、$ d $ 日目終了時点での満足度を計算してください。
Input Format
入力は問題Aの入力の末尾に問題Aの出力が続く形で標準入力から与えられる。
> $ D $ $ c_1 $ $ c_2 $ $ \cdots $ $ c_{26} $ $ s_{1,1} $ $ s_{1,2} $ $ \cdots $ $ s_{1,26} $ $ \vdots $ $ s_{D,1} $ $ s_{D,2} $ $ \cdots $ $ s_{D,26} $ $ t_1 $ $ t_2 $ $ \vdots $ $ t_D $
- 問題Aの入力に該当する部分の制約及び生成方法は問題Aのものと同じである。
- 問題Aの出力に該当する部分は、各 $ d $ について $ 1\leq\ t_d\ \leq\ 26 $ を満たし、制約を満たすあらゆる値に対して正しく動作することが期待される。
Output Format
$ d $ 日目終了時点での満足度を $ v_d $ としたとき、以下のフォーマットで標準出力に出力せよ。
> $ v_1 $ $ v_2 $ $ \vdots $ $ v_D $
Explanation/Hint
### 入門者向けガイド
まずは入力と出力からスコアを計算するプログラムを作ってみましょう。 スコアは実際に提出すれば合計点は分かりますし、今回のようにローカル実行用のスコア計算プログラムが提供される場合も多くあります。 しかし、問題の仕様を正しく理解出来ているかを確認するのにも役立ちますし、解答プログラムを作成する際やデバッグ時にもソースコードが流用出来ることが多いため、よほど複雑なスコア計算で無い限りは作っておいて損はありません。
### 次のステップ
この問題は、1日目に開催するコンテストを決める、2日目に開催するコンテストを決める、… という具合に順番に解を構築していくことが出来、更に構築した部分的な解の良さ(満足度)も計算が出来ます。 そこで、$ d $ 日目にはその日の終了時点における満足度が一番高くなるコンテストを選択する、というアルゴリズムを考えることが出来ます。 このような、その瞬間でのベストな選択を繰り返す「貪欲法」は、既にABCなどのアルゴリズムコンテストで出会ったことがあるかもしれません。 貪欲法は問題によっては最適解を達成することが保証出来ますが、残念ながらこの問題に対しては最適解を与えるとは限りません。 しかし、最適解は得られずとも、多くの場合にそれなりに良い解を求めることは出来ます。 問題Aに戻り、今準備したスコア計算プログラムを活用して貪欲法による解答を実装してみましょう。
貪欲法は汎用性が高く実装が簡単な上に、他の手法に比べ比較的高速に動作することも多く、巨大な入力を処理する必要がある場合には最有力の手法となることも多々あります。 また、貪欲な選択の基準(評価関数)を変更したり、その瞬間におけるベストな解一つに絞らずに複数個の候補を残して構築していったり(ビームサーチ)、貪欲法で得られた解をベースに他の手法で更に良い解を探索したりといった方法で、更にスコアを伸ばしていくことも出来ます。 詳しくはコンテスト終了後の解説を参照してください。
### Sample Explanation 1
この入出力例は問題仕様の確認用の小さいもので、制約 $ D=365 $ を満たしておらず、実際にテストケースとして与えられることはない。