Kotlin Heroes はコンテストには参加せず,C++ や Python で書いたコードを chatgpt に変換してもらうことで AC しています.コンテスト中にこれをやるのはルール違反なはず.
A. Password Generator
B. Showmatch
ソートして順に組む方法が条件を満たすかどうかを確認します.
C. Coin Game
D. Uppercase or Lowercase?
先頭の文字列を聞いて,その先頭の文字によって小文字優先・大文字優先を判別します.あとは単に二分探索です.
E. Color the Arrows
選べる部分列の必要条件として,次のどちらかが成り立ちます:左端が右向き,右端が左向き.これは各時点でそうであることが帰納的に確かめられるからです.
これは十分条件でもあります.左端が右向きのとき,右側にある左向きを右から順に消費していき,そのあと右向きを順に消費していけばよいです.
端となる文字を固定し,残りの部分は
F. Weapon Upgrade
何日目,攻撃力1,攻撃力2 の 3 つ組をキーとして dp をします.最小被ダメージを dp の値とします.
攻撃力の和が今まで撃破した総数を表すので,食らうダメージ数はここから分かります.またその攻撃力で倒せる相手の数もこの情報から分かるので,必要なことは全て計算可能になっています.
G. Esports in Berland
これ(https://atcoder.jp/contests/jag2014summer-day4/tasks/icpc2014summer_day4_d)が似ていると思います.これの私のユーザー解説の真似をします.
.
変数変換していきます.
とすると . とすると . とすると .
H. Nim with Special Numbers
区切りの位置を固定して,左端での grundy 数を入力と見なしたとき,左端の grundy 数から右端の grundy 数を与える規則は
これを少し拡張して,
I. Hamiltonian Partition
ひとつのサイクルに同時に採用できる辺集合は,各頂点での入次数・出次数がともに
すると,頂点を倍化して二部グラフを作ったとき,ひとつのサイクルに同時に採用できる辺集合はマッチングになります.辺集合をマッチングに分解するというのは辺彩色です.
二部グラフ辺彩色は頂点数の色数で可能で,それが最適解を与えます.辺彩色は