ABC151
A
chr(ord(input()) + 1)
B
取るべき合計点から現状の合計点を引く。
それがK(満点)以上なら不可能なので-1を出力。
0以上ならば該当する値を出力。
負の値(すでに超過している)ならば0を出力。
C
AC出した後にWAを提出する謎の行動を弾き忘れ2回WA。
あとは別にフラグ管理していれば良いかと。
今回は、n個のフラグを用意し、WA回数を記録していくことにした。
ACが出たら現状のフラグ(WA数)をペナルティに加算、フラグを-1にセットする。
正解数は、フラグから-1の数を数えれば良い。pythonならcountで一発。
それか別に正解数カウント用の変数を用意してもいい。
D
マップが小さいことからワーシャルフロイド法レベルの計算量まで耐えられると判断。
隣り合う「.」のマス同士の距離を1として初期化を行い、ワーシャルフロイド法ですべての点と点の距離を計算する。最終的にinf以外で最大の値が正解となる。
最初のWAの後、.のマスのそれ自身との距離を0にセットする初期化を追加することでACできたが、なぜそうなったのかがわからない。
E
大きな数の組み合わせを連続で計算する問題であるため、MODの逆数を利用する。
あとは、K個の値の最小値がa[i]になるパターンが何通りあるかを計算し、a[i]と掛け合わせたものを足していけば最小値の合計が求まる。最大値の合計も同様にしてもとめられる。
その個数は、i = 1とすると、のこりn-1個からk-1個を選ぶことになる(1個目は必ず選択するため)。ここで、i = tとすると、n-tCk-1となる。
念の為k=1のパターンを除外して提出し、AC。
F
典型問題だなと感じたが、うまいソースコードがみつからなかった。
答えとなる円は、ある2点を直径とする円か、ある3点の外接円のいずれかである。これらのすべてについて内包を判別し、最小値を計算すればいいらしい。
外接円の求め方は適当に探せば出てくるはずなので、そこに気がついていれば自力でたどり着けたかもしれない。