yukicoder contest 189

やる気なし。ていうかなんでこんなに落ち込んでんだろ。ぷよぷよできないからか。一応うっすらとは上達してるんだけどねえ。上手くなると上が見えちゃうからね。今回もF(No.681)が解ける自分でありたかったねえ。

No.676 C0nvertPr0b1em

最初の問題にしては|S|が大きい。サンプルが間違ってたけど、タイポだろうとエスパーして提出、AC。range-based forを以前より使うようになった。特に今回は非const参照として使ってる。

No.677 10^Nの約数

2が0個からN個、5が0個からN個、全通り試してソートすればいい。重複は、とちょっと考えたが、あるわけない。いつの間にかN^2個だと思ってたけど(N+1)^2個なので。約数をvectorにpushしていったが、vector<ll> a(n);で初期化してN個の0が入るというミス。

No.678 2Dシューティングゲームの必殺ビーム

幅が小さいので、YDでソートして順にビームを取っていくだけ。「横幅1280ピクセル」と書いてあるのでWAが取れず先にE問題をやった。制約をよく見るとビームの最大幅は1281だよね?今気づいたが「左上のドットが(1,1)」とある。「0≤xLB」という制約と整合性がないように見えるが。まあいいや。次のD問題はやってない。

No.680 作れる数

tの和がsになる。tは1から始まって毎回2倍になる。2倍にしたあとで1を足してもいい。sが、与えられたNになることがあるか判定する問題。まず、分岐させながらありえるtの遷移を書き出してみる。すると、セグ木のインデックスのようにきれいな並びとなった。この二分木を根から辿っていった和ということだが、分岐で右に行くことでどれだけ最終的な和が違ってくるかを考える。最後の分岐で右にいくと1増える。その前の分岐だと3。最初の分岐だと(木の高さ+1がKとして)2^(K-1)-1。何回足すかを考えると、30回で10^9は超えるので30回未満。つまり、高さを固定して30回判定すればいい。んで、分岐で変化する量は根に近いほど大きいが、1つ根に近づくことで2倍より大きくなる。つまり分岐で数を表そうとしてもスカスカになって表せない数も出てくる。よって、何も考えず大きいほうから分岐によるゲインを利用するかしないか判断していけばいい。なんかやる気なくてベタ書きの文章になってしまった。しかし、よくこんな場所が残っていたな。いい問題だと思う。

No.681 Fractal Gravity Glue

残り時間はずっとこれやってたが、途中からやる気なくしてた。
石の数と石の大きさの和を両方求める必要があるのか?とりあえずnを0に固定した簡単な問題を考える。石の大きさの総和が求まればいいが、とりあえずもっと簡単そうな、全体の石の数を求めよう。漸化式。すごい色々考えて時間かけてできた。なんでこんな簡単なことがすぐできないんだ。じゃあ大きさの総和は?無理だろこれ。さらに時間が経ち、大きさKの石の数を考えればいいんじゃないかと思った。タテにこうK毎の石の数を並べて、ヨコに足して。めんどくさそう。終わり。こういうのを解きたいという気持ちがあった。なんにもできない。