以下の内容はhttps://blog.hamayanhamayan.com/entry/2018/01/24/121959より取得しました。


幹線道路 (Trunk Road) [JOI/IOI 第17回日本情報オリンピック 予選 C]

https://atcoder.jp/contests/joi2018yo/tasks/joi2018_yo_c

解法

https://atcoder.jp/contests/joi2018yo/submissions/8137095

幹線道路となる道路を全探索する。
H本の道路からsy番目、W本の道路からsx番目を選ぶとする。
あとは、その道路と全ての交差点について距離を計算し、距離×人数の総和の最小値を求めていけばいい。

int H, W, A[30][30];
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> H >> W;
    rep(y, 0, H) rep(x, 0, W) cin >> A[y][x];

    int ans = inf;
    rep(sy, 0, H) rep(sx, 0, W) {
        int sm = 0;
        rep(y, 0, H) rep(x, 0, W) {
            int dy = abs(sy - y);
            int dx = abs(sx - x);
            int d = min(dx, dy);
            sm += d * A[y][x];
        }
        chmin(ans, sm);
    }
    cout << ans << endl;
}



以上の内容はhttps://blog.hamayanhamayan.com/entry/2018/01/24/121959より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14