0.はじめに
2週ぶりの参加。
若干コンテストの事を忘れそうになりながらも、A~Cをさーっとクリアし
DもてこずりながらACとなり、久々の4完。
レートは+27の737となりました。
1. A - Too Many Requests
判定後の出力が、Yes or Noではないところくらいが
普段と違う問題。
1~Nまでのループを作りその中でM以下かどうかを判断して
出力する形でACでした。
https://atcoder.jp/contests/abc429/submissions/70408909
2.B - N - 1
リストAの合計値から、Mを引いた値(以下X)がリストAの中にあればよいので
リストAをセット型に変換し、XがあればYes、無ければNoを出力する形でACでした。
https://atcoder.jp/contests/abc429/submissions/70415024
3.C - Odd One Subsequence
一定条件下での組み合わせ数の数え上げ問題。
【考え方】
・数字毎に個数を求める
・ある数字がv個(v≧2)ある場合、その数字を2つと、それ以外の数字を1つ選ぶ組み合わせの数Pは
以下の式で計算可能
P=(v×(v-1))÷2)×(N(リストAの要素数)-v)
・2個以上あるすべての数字についてそれぞれPを求め、それらを合計すれば求める答えとなる
難易度が比較的低かったせいか、久々に素早く解けました。
https://atcoder.jp/contests/abc429/submissions/70423880
#4.D - On AtCoder Conference
素直に、位置毎の会う人の人数を数え上げるのとTLEになるであろう問題。
【考え方】
1.スタート位置(0.5)をXとした場合に、時計回りに進んで会った人数がC人を超えた時点での出会った人の数をYとする
2.スタート地点から進み、一番初めに出会う人の場所を4とすると、0.5~3.5の4か所の起点でY人と会う計算となるので
0.5~3.5までに会う人の合計は4×Y人
3.同様に、起点が4.5の場合のYを求めその後初めに会う人の場所までの起点数を掛けて・・を繰り返し
M-1.5までの出会う人数を求める。
デキュー等を使い、上記考え方に基づき実装したところACとなりました。
工夫した点としては、2週目以降の計算が必要になる場合に備えた、周回用増分値(変数名MiO)を用意した点位です。
https://atcoder.jp/contests/abc429/submissions/70456302
以上