AtCoder Beginner Contest ABC432 解法メモ
文中で使用しているのは、PythonライクでAtCoderに最適な言語の1つNimです
ABC432
ABC432A - Permute to Maximize
解法
ACコード
ABC432B - Permute to Minimize
解法
先頭に
先頭からみていって、最初の
出来上がった数列を詰めて出力したものが答え
ACコード
メモ
交換、は思いつかず、
ABC432C - Candy Tribulation
解法
各子供に配られる飴の重量が取り得る範囲は
そのすべてに共通する範囲の中で、
目標重量が定まった上で、各子供の
目標重量A.min*Yに対して、すべて
よって、それをすべての子供にわたって足し合わせれば、答えとなる
ただし、そもそも、A.min*YよりA[i]*Xが大きかったり(範囲が重ならなかったり)、
A.min*Y-A[i]*XがY-Xで割り切れなかったら(どう
作れなかったら)、配り方が存在しないので、
ACコード
ABC432D - Suddenly, A Tempest
解法
各矩形
出来上がった矩形群(多くても
大嵐のシミュレート部分は、
わかれ目
矩形の右にあるとき、
矩形の真ん中を分断するとき、
矩形の左にあるときにわけて
移動先の矩形を作っていく
出来上がった矩形の数を頂点数とするUnion-Findを用意し、
全
連結判定は、
片方の軸の
かつ、
もう片方の軸で
groupsのlenと、groupsごとの(rx-lx)*(ry-ly)を合計したものをソートしたものが答え
ACコード
メモ
愚直にシミュレートする勇気が出なかった
ABC432E - Clamp
解法
クエリ
これは、
それ以外については、
これは、
初めに、すべての
c.add(A[i],1)と、s.add(A[i],A[i])をしておく
クエリ
(もちろん、A[x-1]=yに書き変える)
クエリ
c[0..<l]*l+s[l..<r]+c[r..5*10^5]*r
を出力すればよい
ただし、
ACコード
メモ
値を軸に2種類の木で管理すべきことまではわかったが、なぜかセグメント木を持ち出してしまい、実装に時間をかけた
Discussion