AtCoder Beginner Contest ABC413 解法メモ
文中で使用しているのは、PythonライクでAtCoderに最適な言語の1つNimです
ABC413
ABC413A - Content Too Large
解法
echo if A.sum<=M: "Yes" else: "No"
ACコード
ABC413B - cat 2
解法
HashSet
if i!=j: s.incl(S[i]&S[j])
としていけばよい
s.lenが答え
ACコード
ABC413C - Large Queue
解法
用意したDequeに、
タイプ
タイプ
Dequeの前からtupleを取り出しながら、
Dequeの頭に
ACコード
ABC413D - Make Geometric Sequence
解法
つまり、B=A.sortedByIt(it.abs)でよい
import rationalsとすれば有理数が扱えるので、
A[it+1]//A[it]がすべて同じならYesである
ただし、上記の
ACコード
メモ
公比
rationalsやsortByItがすぐに浮かばず、遠回りした
ABC413E - Reverse 2^i
解法
問題文の操作とは、
全体を半分にした前後の入れ替え、その半分の前後半々分の前後入れ替え、…
辞書順最小にするには、最小値を一番左に置くことに徹すればよく、
全体幅から初めて、前後どちらに最小値があるかみて、前半ならそのまま、後半なら反転を行っていけばよい
実装には再帰関数が最適で、
入力数列の最小値の位置によって、そのままか反転を行い、前半と後半に分けて、再び再帰関数を呼べばよく、数列の長さが
ACコード
メモ
セグメント木で最小値を検出、と思い込んで、再帰処理は浮かばなかった
Discussion