ABC199参加記

ABC199に参加しました

AtCoder Beginner Contest 199(Sponsored by Panasonic)に参加してきました.

自分は3問解いたという感じでした.自分なりの解答を以下にまとめたいと思います.

A - Square Inequality

この問題は A*A+B*B<C*C をif文等で判定できればいいですね. ちょっと難しく書くとこうやって短縮できたりします.

cout<<((A*A+B*B<C*C)?"Yes":"No")<<endl;

B - Intersection

これは,A_1<=x<=B_1,A_2<=x<=B_3…,A_N<=x<=B_N をすべて満たせばいいので,これを言い換えると

(Aの数列の最大値)<=x<=(Bの数列の最大値)

としてあげるといいですよね.気をつけるのは植木算のアレ,+1を忘れないってこと.サンプルチェックすれば気づくよねっていうやつ.

C - IPFL

これは少し慣れがいる問題になるのかなという気がします.

すべての文字を入れ替えると計算時間がたくさんかかって時間制限超過(TLE)という結果が帰ってきてしまうかもしれません.

自分は入れ替えた回数が偶数か奇数かをmodeとして持ちました.

  • modeが偶数(0含む)
    このときは,i番目をi番目として扱って大丈夫.
  • modeが奇数のとき
    このときのi番目の文字列はFLIP(入れ替え)する前の文字列で言う(N+i)番目になります.ただし,2N+1番目以降は2Nであまりを取ったものになります.
    例)N=2のとき0番目はS[2],2番めはS[(2+N)%(2*N)=0]と言った感じ.半分入れ替えるを先頭文字をS[N]にすることで解決してる感じです~

D以降

Dは難しかったですね.辺がなく独立した点の数だけ3を書けるというところまでしか気づけませんでした.復習しておきます!

終わりに

MMA仮入部員と部員で,終わった後にあの問題が難しかった,どうだったという話をしました.サークルっぽくて最高でした!

仲間と一緒にやるのって楽しいですね.また次回も頑張っていきたいです!


MMA

803 Words

2021-04-25 02:18 +0900