久しぶりの SRM。 SRM366 に挑戦。

ChangingSounds (code)

250 点問題。典型的 DP。

GuitarConcert (code)

500 点問題。N=10 なので、2^N の Brute-force でいけます。結果を、lexicographically で優先順位をつけるところだけが注意点です。

ですが、System Test に落ちました。えーと、ここの、

void sort(String[] a, String[] b) {
    int N = a.length;
    for (int i = 0; i < N; i++) {
        for (int j = N-2; j >= i; j--) {
            if (a[j+1].compareTo(a[i]) < 0) {
                swap(a, j, j+1);
                swap(b, j, j+1);
            }
        }
    }
}

この行ですね。

if (a[j+1].compareTo(a[i]) < 0) {

i ではなく j ですよー。気付きましょうよー > 私。

if (a[j+1].compareTo(a[j]) < 0) {

これで System Test に通りました。 typo のままで、Example Case に通ってしまったのが、運のつき。

LateForConcert (code)

1000 点問題にもかかわらず特に悩むところはない珍しく簡単な問題。ですが、どうしても答えがあわない。。そのまま時間ぎれ。

やはり、一箇所ミスってました。

double[][][] next = new double[R][C][4];
fill(dp, INF);

dp ではなく next ですよー。気付きましょうよー > 私。

double[][][] next = new double[R][C][4];
fill(next, INF);

これで System Test に通りました。 typo というよりは、典型的なコピペ後の修正し忘れってやつですね。

結果

System Test の結果です. ( Room Statistics )

今回は、3 問全部解くべき簡単な問題セットだったと思うんですけど。ミス 2 連発では、お話になりません。

レーティングは、1856 > 1760 とまとも低下。やむなし。。