競プロっておいしいの?(仮)

読者です 読者をやめる 読者になる 読者になる

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(長いです。)

問題要約。

  1. サイコロを好きな向きに置きます。
  2. 奥、左、右に倒すことができます。
  3. 一番上に来た目の得点がもらえます。
  4. では、X点以上貰えるのは何回動かしたときでしょう!

以下感想。解説まで読み飛ばしたい方はこちらをクリック。

1. こんなソースを書いた

    scanf("%lld",&N);
    ans=N*2/11;
    temp=N%11;
    if(temp<=6){
        ans++;
    }else ans+=2;
    cout<<ans;
これだと(6AC残りWA)何がまずいんだろうか。

2. 改良を考えた、

ans=N*2/11;//こいつを
ans=N/11*2;//と書き換えた
するとびっくり。こうなった。

クッソがアアアアアアアアアアアアアアア!
さて、問題は何だったんでしょうか。余り0でも1を足してしまっていた。

纏めます。

  1. 6,5,6,5と繰り返し出すのが最適。
  2. 11でわろう。(11以下の処理は先に書きました)
  3. あまりが6以下なら2で出た答えに+1。それ以外なら+2
  4. 余らなかったら足さない。
  5. 終わりです。(のはず)

D問題:Card Eater

問題を読み違えて時間切れ。

偶奇の問題だった。(解説)

問題要約:

  1. N個の数字が書かれたカードが渡されます
  2. 3枚選んでその中で、1番大きい数と1番小さい数を食べます。
  3. 残りは戻します。
  4. 被ってるものがないようにしたいです。
  5. 最大何枚残せるでしょう!

ささっと解説します

  1. 2個食って1個戻す。
  2. 減ってるのは2個。
  3. 求められているのはカードの枚数
  4. これすなわちカードの種類*3を指します。
  5. 必ず2枚ずつ減っていくことから偶奇は変わらない。
  6. 最初が奇数なので、被ったカードの枚数が偶数ならOK
  7. 奇数なら2枚ずつなので、一種類減る。
  8. よって、カードの種類がk種あるとしたら
  9. 被ったカードの枚数が、偶数なら、奇数ならk-1

私偶奇の問題気づかなすぎてだめ。助けてください。

フォロワーさん各位。私がTwitterで死んでるのを観測したら助けてあげてください。

それでは今日はここで。

おまけ。精進!

 

*1:ここに2.のソースリンク貼ってます

*2:同様に、3のソースのリンクです

*3:被らないように減らすため