りにゅうしょく

競技プログラミング 日常

Codeforces Round #627 (Div. 3) 出たで

コンテストの感想を書いたことないなーと思ったので書きます!

普段より早い時間で参加しやすかったので、Codeforces Round #627 (Div. 3)に出ました。まだHack時間中だけど多分3完です。

 

Problem A Yet Another Tetris Problem

URL:https://codeforces.com/contest/1324/problem/A
問題文が読みづらくてちょっとビビりました。上から高さ2、幅1のブロックが降ってきます。テトリスとあるように、横一列にブロックが揃うと消えます。幅(要素数)と高さが初期値として入力で与えられるので、ブロックを降らせていって全部消すことができますか?みたいなことが書いてあります(多分)。
読解できたら問題は簡単で、要素同士の高さの差が奇数の場合は2*1のブロックで埋めることができないのでNOを出力します。

 

Problem B Yet Another Palindrome Problem

URL:https://codeforces.com/contest/1324/problem/B
「Palindrome」って単語めっちゃかっこいいですね。翻訳されなくてググったら回文って出てきました。数列が与えられるので、部分数列(連続していなくてもよいが順番を並び変えてはいけない)に回文数列(1 2 1みたいな)が含まれていますか?という問題。hackフェーズで落ちてしまいました。泣いてええか?
mapでそれまで出てきた数字を管理して、今見ている数字が2回以上出てきてたらYES(1 1 1 みたいな回文数列が作れる)、1回出てきている場合は直前の数字が今見ている数字と違えばYES(1 2 1みたいな)を出力します。

 

Problem C Frog Jumps

URL:https://codeforces.com/contest/1324/problem/C
「L」と「R」からなる文字列が与えられ、Lにいるときは左に、Rにいるときは右に移動できます。一番右(文字列の長さNに対してN+1番目)を目指すとき、カエルが一度に移動できる最短距離はいくつですか?みたいな問題です。何でかは分からないんですが(は?)Lを踏んでも無駄っぽいのでRまでの最長の距離+1が答えになります。コンテスト中はこっちのほうがHackされるかもと思っていました……(理屈がわかってないため)

 

Problem D Pair of Topics

URL:https://codeforces.com/contest/1324/problem/D
素数Nの数列Aと数列Bが与えられるので、i番目とj番目を選んだ時、A[i]+A[j]>B[i]+B[j]となる組み合わせはいくつありますか?という問題です。AとBの差が大切ぽいのは分かるので、A-Bを配列Cに入れていきます。Cを小さい順に並べたとき、たとえばC[0]が-5だったら、5より大きい数字と組み合わせることで条件が達成できます。「配列C内にホニャララより大きい要素が何個あるか」は二分探索で求められるので、C.end() - upper_bound([今見てるやつより一個後ろのイテレータ], C.end(), 今見てる数字)を答えにどんどん足していけばおっけーです。今見てるやつより一個後ろのやつから探し始めることで、重複して数え上げてしまうのを防げます。

 

ProblemE & Problem F なんもわからん
こどふぉ なんもわからん
全人類オヤスミ太郎