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点の外接円のいずれかである。これらのすべてについて内包を判別し、最小値を計算すればいいらしい。

外接円の求め方は適当に探せば出てくるはずなので、そこに気がついていれば自力でたどり着けたかもしれない。