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はえらく簡単だったけど)