2022年1月4日火曜日

Hello 2022

 Dまで四完。なお、ツイートでは4WAと書いてますが、5WAだったようです。

コンテスト後のツイート

E. New School

 実装が間に合わなかったが、やり方はあっていた。

 人を削らないなら、グループ年齢の平均値が大きい順に、教師の年齢が大きいものを割り当てるのが最適。
 人を削ったら、そのソートした年齢順のリストの、あるindex xからindex yへうつる。その際、年齢平均のindexが[x, y]にあったグループのものは、一つプラス側かマイナス側にずれ、他は変わらない。
 なので、初期状態、一つプラス側にずれた場合、一つマイナス側にずれた場合、それぞれについて教師を割り振ることができるかを前計算しておく。そして、各人を削るごとに、そのグループがx→yへうつるかを二分探索により計算し、そのグループの判定および、他の判定を上記のようにすれば良い。

 私は、初期状態、プラス側、マイナス側についてセグ木を立てて実装したが、累積和でできる模様。
 また、ソートに小数を使う必要はなく、ceilさえ分かっていれば良い(教師の年齢は整数なので)というのは目から鱗だった。


0 件のコメント:

コメントを投稿