全6問の新形式になってから初の全完!
結果
全完81分で589位。 ここ最近レートが上がりつづけているので青帯になる日も近いかもしれない。
A - Air Conditioner
30≤Xを判定する。 atcoder-toolsの入力コードとyes/no自動生成とがとても役に立った。
提出 #15589015 - AtCoder Beginner Contest 174
B - Distance
D≤√X2i+Y2i を満たす点を数えるのだが平方根を求めると誤差がこわいので、 D2≤X2i+Y2iに変形して整数演算に収まるようにする。
提出 #15594414 - AtCoder Beginner Contest 174
C - Repsept
a1=7,aN+1=aN∗10+7を計算して条件を満たすものを探す。 aNは大きくなるのでKで割ったあまりで計算する。 コンテスト中は直感で書いているのでこれで正しく動く確信がない。 実際条件が詰めきれずに2WA。
提出 #15611165 - AtCoder Beginner Contest 174
D - Alter Altar
ある場所を境に左側はすべて赤、右側はすべて白になる。 境界の位置を固定したとき、左側にある白と右側にある赤を入れ替えて、残ったものの色を反転操作で変えるのが最適になる。 累積和を使えばこの問題はO(1)で解けるので、境界の位置を総当りすればO(N)で解ける。
提出 #15615020 - AtCoder Beginner Contest 174
E - Logs
あらかじめ答えxがわかっていれば、xより長い丸太を端からxづつ切っていけばよく、 そのように切れば長さが小数の丸太を作らずにK回の切断で最も長い丸太の長さをxにできる。 xが与えられた時に何回の切断でそれを実現できるかは各丸太の長さをxで割って(切り上げ) やればO(N)で求められる。 あとは切断回数がK以下になる最小の長さを2分探索で求めてやればO(NlogN)で解ける。
提出 #15619219 - AtCoder Beginner Contest 174
F - Range Set Query
なんかこういう問題見たことあるなと思って「種類数 競プロ」とかでググったら そのままのアルゴリズム が出てきた。 クエリをrの昇順でソートしてやると、BIT(Binary Indexed Tree) 等の区間和を高速に求められるアルゴリズムを使うことでrが小さいものから順に求められる。 典型問題をそのまま出してきた感じっぽい。