Nafmoの精進日記 ver1.1 (ABC 053)
単発企画じゃなくなった!
やったね!頑張ってます。Nafmoです。
1.1か2.0か迷ったけど1.1でいいかってなりましたね。
今回はvirtual contestを使わせていただきました。
それでは行きましょう。
目次貼りましたがはてな標準見づらいですね。
自分で書きたくないよー
この記事文字数がなんと1400文字超えましたよ。長いw
AtCoder Beginner Contest 053
A問題:ABC/ARC
この問題は、文法がわかってればやるだけですね。
if文で分岐させましょう。気をつけるのは1200未満
という範囲の境目だけです。
B問題:A to Z String
この問題は、2WAしました。反省します。
問題要約:与えられた文字列の中で、Aから始まりZで終わる文字列の中で一番長いやつの長さを出力しよう!
- 1回目:AからカウントZが出たらbreak;
→ABZAAAAAAZみたいなのに対応不可能。 - 2回目:フラグを立てて上の例に対応しようとした。
→よくわからないWAが一部生える - 3回目:あれ?これAの位置と最後のZの位置を変数にぶっこんで引けば正解じゃ
→気づくのが遅い(AC)
反省してます。はい次。
C問題:X: Yet Another Die Game(長いです。)
問題要約。
- サイコロを好きな向きに置きます。
- 奥、左、右に倒すことができます。
- 一番上に来た目の得点がもらえます。
- では、X点以上貰えるのは何回動かしたときでしょう!
1. こんなソースを書いた
scanf("%lld",&N); ans=N*2/11; temp=N%11; if(temp<=6){ ans++; }else ans+=2; cout<<ans;
ans=N*2/11;//こいつをするとびっくり。こうなった。
ans=N/11*2;//と書き換えた
さて、問題は何だったんでしょうか。余り0でも1を足してしまっていた。
纏めます。
- 6,5,6,5と繰り返し出すのが最適。
- 11でわろう。(11以下の処理は先に書きました)
- あまりが6以下なら2で出た答えに+1。それ以外なら+2
- 余らなかったら足さない。
- 終わりです。(のはず)
D問題:Card Eater
問題を読み違えて時間切れ。
偶奇の問題だった。(解説)
問題要約:
- N個の数字が書かれたカードが渡されます
- 3枚選んでその中で、1番大きい数と1番小さい数を食べます。
- 残りは戻します。
- 被ってるものがないようにしたいです。
- 最大何枚残せるでしょう!
ささっと解説します
- 2個食って1個戻す。
- 減ってるのは2個。
- 求められているのはカードの枚数
- これすなわちカードの種類*3を指します。
- 必ず2枚ずつ減っていくことから偶奇は変わらない。
- 最初が奇数なので、被ったカードの枚数が偶数ならOK
- 奇数なら2枚ずつなので、一種類減る。
- よって、カードの種類がk種あるとしたら
- 被ったカードの枚数が、偶数ならk、奇数ならk-1
私偶奇の問題気づかなすぎてだめ。助けてください。
フォロワーさん各位。私がTwitterで死んでるのを観測したら助けてあげてください。
それでは今日はここで。
おまけ。精進!