Comments碧黴(あおかび)です。2018に参加してきましたので、その参加記をサクッと書きます。繰り上がりでTHANKSに通ったらしい。朝2時寝5時起きをかましてしまいクソ眠い。最悪だけど流石にもう寝れない時間なので新幹線で寝ることにする。切符は当日とっても大丈夫やろと思い7時に仙台駅へ。一緒にいくゆきのんに30分待たされたのち、座席を確保し出発。帰りの指定席がほぼ埋まっているのを聞いて、そういえば世間は3連休なのかと気づく。若干早く東京に着いたので、新橋をテキトーに散策しながら問題の予想をする。500までやし全完いけるやろ!wと高を括る。受付開始ぴったりくらいにテレコムセンターに到着。備え付けのTシャツ(初ゲット)と持ってきたC++完全理解パーカーを着て気合を入れたのち、夏合宿で会ったTIkeさんやTABさん、Twitterで知っていたc7c7さん、らてあさんと話をしてたりした。2018AtCoder社長がカメラを構えていたのであった。chokudaiさんとお会いしたのは初めてだったので、念願だった”アレ”をやる。2018蟻本にサインしてもらうやつの話をしたら本人的には複雑らしいので遠慮しておいた。競技そんなこんなであっという間に開会式。気になるパーカーのボーダーはなんと上位50名。相対評価くんねお弁当を食べる暇がなさそうなのはなんとなく察していたので、もらった瞬間に食べた。Aはまあ100点なのでif文を3個書いたら終わった。ボールの入った2つの箱から(1,3)個or(3,1)個取り出す操作を繰り返してちょうど0にできるかという問題。ペナルティがないのもあって、テキトーに剰余で判定したやつを投げたらWA。微妙に制約がデカいせいであんまり解法が降ってこない。操作の順番は関係ないので、とりあえずたくさん入ってる方から3個取り出し続けて同じ個数になったときに4の倍数かで判定。負数判定を忘れて若干詰まったものの、なんとかAC。連立方程式を解いてもよかったかも。全ての2点間の絶対値の和を出力する問題。絶対値がイヤなのでソート。diff配列を用意して、それが何回加算されるかを左右から数えておわり。いうのは絵をかくとすぐわかる。2秒で浮かんだ貪欲を書いてAC。問題の内容がさっぱり頭に入って入ってこない。1,...,i,...,Tの数字をそれぞれa_i個まで黒板に書ける。同じ数字iが2つあれば、その2つを消してi+1にできる。このとき、最後に数字がぴったり一つ残るような最初の数字の書き方は何通りありますか、という問題。Bで詰まって順位が低かったのもあって、結構焦る。操作的にビットっぽいなあと思ったりしたものの、実験してもよくわからない。これ、参加記を書いてる今なら自明だなあと思ったけれども、小さい数字から順に消せるだけ消して、1個あまるとダメだから、割と簡単なDPで解ける。i番目の数字がj個残ってるとき、i+1番目の数字はk個最初からあるとしてj/2+k個になる。dp[i][j]\)をやればいいことになる。max(a)^2)\)なんとなくDPっぽいことは察してたものの、”消せるだけ消す”操作を繰り返したときに計算量が結構大きくなるような気がしてて、うーんうーんと唸っていた。等比級数の和なのにね。