0.はじめに
夜勤明けのため眠気ふらふらで挑んだ今日この頃。
AB順調でしたがCが意外とてこずる。
最近Cを舐めてたなと思いつつ何とかクリアしてD。
Dはそこまで手がかからずクリアできました。
E以降は難易度のせいか睡魔のせいか解き方が思いつかず
ベッドにダイブ。
結果4完となりました。
レートは+31の797と大幅に復帰しました。
1. A - Secret Numbers
数字文字判断問題。
コードやニューメリックチェック等あるんだろうなと思いつつ
セットに0~9までの文字を登録して有無判断すると言う
力技でACとなりました。
https://atcoder.jp/contests/abc462/submissions/76619007
2.B - Gift
渡した人リストで貰ったプレゼント情報を整理し
受け取った人リストで出すといった問題。
人毎の受け取ったリストを用意し、渡した人リストを読み込み
受け取った人のリストに渡した人を登録していく。
最後に受け取った人リストを順に出力して終了。
https://atcoder.jp/contests/abc462/submissions/76630821
3.C - Not Covered Points
最初例題を見て、X=1かY=1の点しか条件に当てはまらないのでは?
基本2で、X=Y=1の時だけ1になるのでは!!
と、適当な考えで答えを提出したらWA。
まぁ冷静に考えると
(3,1)、(2,2)、(1,3)
みたいな場合は3になるしな・・・と思いました。
真面目に考えて以下の考え方に至りました。
【考え方】
最小Y(初期値N+1)と答え用変数ans(初期値0)を用意する
点をXの昇順に見ていき、Yの値が最小Yより
小さければ、最小Yを更新しansに1加算
最後にansを出力して終了
と、言った感じであっさりACとなりました。
https://atcoder.jp/contests/abc462/submissions/76640681
4.D - Accomplice
問題を読み解くと
開始時間ごとの犯人候補数を求め
開始時刻ごとに取りうる組み合わせ数を集計すればよいとわかります。
開始時間ごとの犯人候補数はイモス法でもとめました。
【実装】
1.時刻の最大値MXに10の6乗+10をセット
2.NとDを読み込む
3.時刻ごとに犯人の可能性のある人数を格納するリストX(項目MX個)を初期値0で作成
4.以下N回繰り返し
-1.S、Tを読み込む
-2.S+DがT以下の時(人iが犯人の可能性があるとき)
-1.XSに1を加算
-2.XT-D+1に-1を加算
5.回答用変数ansを0で初期k
6.辞書D(キー:犯人の可能性がある人数、値:キー人から2人選ぶ場合の組み合わせ数)を作成
→一応高速化のため、辞書を用意して組み合わせ数を求める処理回数を削減
7.以下、iを1からMXまで繰り返し
-1.X[i]にX[i-1]を加算(イモス法で時刻iの容疑者数を計算)
-2.X[i]が2以上の時(容疑者が2人以上=犯行可能)
-1.X[i]が辞書Dに無い時
-1.時刻ごとの犯人組み合わせ数nansにX[i]人から2人を抽出する場合の組み合わせ数をセット
-2.ansにnansを加算
-3.辞書にキーX[i]、値nansを登録
-2.X[i]が辞書Dにある時
-1.ansにD[X[i]]を加算
8.ansを出力
Dにしては易しめの問題でした。
https://atcoder.jp/contests/abc462/submissions/76652581
以上