D - 画像処理高橋君 ~2次元vectorを塗る paint~

f:id:peroon:20191027191931p:plain

Quiz

https://atcoder.jp/contests/abc039/tasks/abc039_d

AC Code

void paint(ll i, ll j, VV& G, ll v){
  ll H = G.size();
  ll W = G[0].size();
  // 近傍8も塗る
  FOR(dx, -1, 2){
    FOR(dy, -1, 2){
      ll tx = j + dx;
      ll ty = i + dy;
      if(0<=tx && tx<W && 0<=ty && ty<H){
        G[ty][tx]=v;
      }
    }
  }
}

ポイント

  • 結果画像で白のピクセルの8近傍を白にする
  • 縮小前の候補画像ができたら黒ピクセルの8近傍を黒にする
  • この2つの処理を関数paintで同様に扱うことで楽をした

プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?

プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?