バイトの競プロメモ

主に競技プログラミング

E - guruguru

E - guruguru

お気に入りを使わなかったときに比べて、それぞれのお気に入りボタンで答えがいくつ少なくなるかの表
サンプル1
分かりやすさのためm+1は1として扱う
fからtで移動する際、f+2からtにかけて-1 -2と増えていく
f:id:baitop:20190206225531p:plain
これは下のようにいもす法を二回使えば解ける
f:id:baitop:20190206225912p:plain
f:id:baitop:20190206225920p:plain
Submission #4185823 - AtCoder Regular Contest 077

int solve(int n, int m, vi a) {
    vi rui(k5 * 3);
    int su = 0;
    vi ato(k5 * 3);
    rep(i, n - 1) {
        int f = a[i];
        int t = a[i + 1];
        if (f > t) {
            t += m;
        }
        su += t - f;
        rui[f + 2]--;
        rui[t + 1]++;
        ato[t + 1] += t - f - 1;//1 - d-1まで入っている
    }
    imo(rui);
    rep(i, k5 * 3)rui[i] += ato[i];
    imo(rui);
    vi res(m + 1);
    rep(i, 1, m + 1)res[i] = su + rui[i] + rui[i + m];
    return min(res, 1, inf);
}