ABC103
久しぶりに完答
A:
最初のコストが0なのを見落としていて無駄な時間がかかる
意味もなくソートしたりしたけど、実際はmax - minをすればいいだけ
B:
1こずつずらしてn回ループするだけ。pythonのリスト分割はやはり便利
C:
mを最小公倍数-1にすればいいのではと思ってぐちゃぐちゃやってた
実際のところ、mが最小公倍数なら、各要素はa_{i} - 1なので、もっと簡単
...なんだけど、それを手計算したら1ずれるとかなってて混乱してた。要反省
D:
これも問題の読み間違い。一直線なのに木構造と勘違いして悩む。
で、入力部分書くときに木はどこ?ってなって判明。あのさぁ・・・
とりあえず重複部分を削除するため、、iと組になるj(j > i)について、最小のjについてi-j間で切ればいいいことがわかる。
ということでj - 1で切って、次のiはj以上のものから検索、ってやろうとしたらサンプルでエラーが出た。
なんでやーって思ったら、1-7と2-3があった場合、7で切って3で切らないみたいなことをやってしまっていた。
ということで、各aに対して、最小のbのみを記録した配列を作成する
で、全体をみて最小のbの手前で切るのが一番効率がいいので、そこで切り、そのb以上であるaの中から、新たにbが最小となる点を探すように探索を行う。
これがギリギリで間に合ってなんとか緑に
安定して完答ができれば水色までは狙えそうだね(今回のDはえらく簡単だったけど)