ゆるふわ競プロ

Javaでゆるゆる競プロしています.忘れっぽいのでメモ用,復習用

ABC103 D (Pair)

問題

橋を切断する問題。

解放

新しいクラスを作り(a,b)をbについて昇順にソートする.
そこからは (a,b)のbの小さい方から見てbの直前の橋を切断していくを繰り返しました。 今回重要なのは考え方もそうだが新しいクラスの定義が重要でした。
正直言うとまだ何も理解していない。staticクラスを作るべきなのかpublicをつけないべきなのかよくわからずエラーを出しては従うを繰り返してしまった.(結果的には従ったらエラーが消えてくれたわけだが...)

作ったクラス

class Pair implements Comparable {
    int from;
    int to;

    Pair(int from, int to) {
        this.from = from;
        this.to = to;
    }

    @Override
    public int compareTo(Object other) {
        Pair otherPair = (Pair) other;
        if (this.to == otherPair.to)
            return this.from - this.to;
        return this.to - otherPair.to;
    }
}

このようなPairクラスをこちらを参考にして作らせていただいた。

ArrayList<Pair> pairs = new ArrayList<Pair>();
// 入力操作 //
Collections.sort(pairs);

これで(a,b)の組みを保ったままソートできてしまうから驚きだ。これ前にも使いたいときあったなと思った。上のcompareTo の部分で比較対象が決まっているらしい。implementもよくわからずって感じです。

もう少し真面目にjavaの勉強しようかなと思いました。