ABC072

 ちょっと良い話

前回は悲しい話だったからね。良い話しよ。

実は連続AC日数が7日目(まあ1日1問しか解いてないから実質2日なんだけどね)。

気分的には長い方が良いかなって(コンテスト本番はカウントされないみたいね)。

 

全完すると残り時間でブログ書けるのね

AtCoder Beginner Contest 072 - AtCoder

問題は読んじゃって。

A-Sandglass2

砂時計の残砂量を答えなさいと。

最近知ったけど、if文って書き方がいろいろあるのね。(そのせいでDでWA出したけど(これは罠で私の注意不足))

if($x > $t){

echo $x - $t;

}else{

echo 0;

}

分かりやすいから、いつもコレを使ってるけど、競プロ的な速度を求めると、

echo ($x > $t)?$x - $t:0;

って書いた方が速いよねくらいの話(なれない書き方でWAするくらいならちゃんと書こ)

(追記:echo max($x - $t,0)っていう書き方、かしこいね)

B-OddString

文字列の奇数番目だけ出力しなさいと。

前に書いたかもしれないけど、str_splitで文字列を配列にしてcountするか、strlenで文字列の長さをもらうか、どっちでも良いらしい。

for文は嫌いじゃないけど、while文の方が好きなので、私は全部whileで書くよ。(whileの方がちょっと速いらしいよ)

C-Together

同じ数をできるだけ多く選びなさいと。

制約が10万までだから、全部数えてもいける気がした。(いけた)

array_count_valuesっていう配列内で出てくる値の個数を数えてくれる機能があるから、これのmaxを出力したら終わり。(ところで、入力例1は妻子肥後国と読めますね)

D-Derangement

順列をバラバラにしなさいと。(私のコードは無駄が多いので真似しないでね。)

とりあえず、混ざってないのがどこにいるか調べる。

で、前後に混ざってないのが2つあれば、1回で入れ替えできるから回数が減らせると。(何をやらかしたかっていうと、2つ繋がった時に1増やさないように書いたら、3つ以上繋がった時も増えないコードになってたのね)

まとめとか結果とか

1WA全完で127位、perf1186のrate1076(+14)

遅いのが悪いんだけど、全完でもレートほとんど増えないね。(0WAで30分全完ならperf1400いくんだけども)

そろそろARCにいくか、perf1600出すかrate1200乗るまでABCに残るか。

まあそんなとこで