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

Twitter1周年なので振り返る。

振り返り。

 どうも、Nafmoです。

この記事はTwitterアカウント開設1周年ということで、適当に1年でやったことを振り返る記事ですね。はい。

競技競技してない記事なので…そこらへんはご了承くださいね。

続きを読む

ABC 085 参加記録

どうも。問題文を読まない芸人です。

ども、Nafmoです。

あけおめです。今年も是非よろしくお願いします。

CombNaf3 LT埋まりりましたね。ありがとうございました。

補欠まだチャンスがありますのでぜひぜひ!!

さて、ブログはじめはABC参加記録で行きましょう。

WAを生やしまくりました。

でも、解き易くて楽しかったw

解説いきま~す。

ABC085 解説。

A問題

Nafmo's Source-A

文字列受け取って S[3]=8;...としたのが私のWA

正解は '8'

cout<<S<<endl;で終わり

B問題

Nafmo's Source-B

読み替えましょう。

何個の種類のサイズがあるでしょうか?

set使ってかぶりを除いたとき、残った個数を出力。

C問題

Dのが簡単に実装が終わった。

問題文をよく読め。

Nafmo's Source-C

  1. x*10000+y*5000+z*1000==Yの時の(x,y,z)を求める答えとする
  2. z=N-(x+y)
  3. xを0~N回ループする中でyを0~N回ループさせて(x,y,z)を確定させる
  4. Yと一致するか確かめる。
  5. 出力して終わり。
  6. 私のWAは (x,y,z)と出力するのを(z,y,x)としたことが原因です。

D問題

Nafmo's Source-D

  1. 考察過程を書きます。
  2. 回数決め込んで二分探索か...?
    2種類あるのでやりにくそう...保留
  3. x種類目まで使ったときyHP削るときの最小回数でDP
    空間計算量dp[N][H]で死を迎えるので不可
  4. じゃ、貪欲か?
  5. ナイフは投げると使えなくなるから、
    投げない操作と同時にやるときは最後に投げれば良いな~
    投げるのを1回に固定すれば順番関係ないじゃん
  6. 投げない操作の最大値より大きなものを全部投げきって、
    残りは投げない操作で殴り続ける。
  7. この貪欲で行ける。書くぞ
  8. 通った決めた俺天才か??????
  9. え、C落ちてるじゃん(絶望)
REP(i,N){//0~N-1のループ。
    if(A[N-1]<B[N-1-i])H-=B[N-1-i];
    else break;
    ans++;
    if(H<=0){
        cout<<ans<<endl;
        return 0;
    }
}
ans+=(H%A[N-1]==0?H/A[N-1]:H/A[N-1]+1);
//とかでうまくいきますね

 

感想

  1. 問題文を読みましょう。
  2. '8'と8は違います。
  3. 出力順を間違えないで
  4. 注意力がなさすぎてクソ
  5. でも今回のセットは早解きセットでしたね。
  6. そこまでひねくれたものがない印象です。
  7. mokoちゃん早すぎ.....でもあれはできる速度だなぁと思った。
  8. さて、みなさんは私を超えられましたか?

Unratedですね。(水色のため)

次回は私を抜きましょうね(

ABC084 参加記録

Good Bye 2017

私の競プロ人生が始まった年が終わりました。

今度まとめ記事でも書こうかしら。

今年レート変化~~~~

0(undefined)→1214(Highest:1240)


ABC084 解説。

A問題

Submission #1925336 - AtCoder Beginner Contest 084

2日は48時間、A時間だけ引き算しましょう

cout<<48-A<<endl;

B問題

Submission #1924189 - AtCoder Beginner Contest 084

前からA文字、後ろからB文字

をそれぞれ、substrして(部分文字列をとる)

その文字列全てに対して

0~9に当てはまってるかを確かめ、

(for(auto x:S)if(0<=x-'0'<9))のような感じ。

間の1文字がハイフンかを確かめて

上3つがすべて成り立つかどうかでYes/No分岐

C問題

Dのが簡単。

Submission #1926566 - AtCoder Beginner Contest 084

  1. i(カウンタ)で,N回ループを回す。
  2. Tを今までにかかってる時間とする。
  3. その中でfor( j | i+1~N-1)まで回す。
  4. TがS[j]以下ならT=S[j]+C[j];
  5. それ以外なら
    ((T-S[j])/F[j]を切り上げたもの)*F[j] + C[j]
  6. でTを出力する。

D問題

Submission #1925336 - AtCoder Beginner Contest 084

  1. 素数を列挙。
  2. その過程で、素数が出てきたら1足して2で割ったものが素数かどうか判定して S[その数]=1とする。
  3. S[]の配列で累積和を取る。
  4. 残りはクエリで累積和で計算して区間和を取る。
  5. おしまい。

感想

  1. A-Bはコンパイル無しで行く縛りをやりました。
  2. Cは捨ててDを通した。累積和優勝。
  3. D、素数判定、ライブラリほしいな。
  4. C、問題文読みチャレンジに成功した。
  5. けど、注意力がなさすぎてだめでした。
  6. さて、みなさんは私を超えられましたか?

私が今年参加するコンテストはこれで終わりです。

良いお年を。