けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

二次元グリッド

AtCoder ABC 229 A - First Grid (7Q, 灰色, 100 点)

上手に考えよう! 問題へのリンク 問題概要 2 × 2 グリッドが与えられる。各マスは白黒に塗られている。 黒色マスの文字は '#' で与えられ、白色マスの文字は '.' で与えられる。黒色マスがすべて連結しているかどうかを判定せよ。 解法 まず、2 × 2 のグリ…

AtCoder ABC 307 C - Ideal Sheet (2Q, 水色, 300 点)

とても面倒な全探索問題 問題へのリンク 問題概要 サイズが等しいとは限らない 3 つの白黒のグリッド が与えられる。 ある巨大なグリッドに、2 つのグリッド を重ね合わて (黒色部分について OR をとる)、そこから適切に長方形領域を切り出すことで、グリッ…

AtCoder ABC 356 B - Nutrients (6Q, 灰色, 150 点)

二次元配列の練習問題! 問題へのリンク 問題概要 種類の栄養素があり、 番目の栄養素を g 以上摂取したい。 そこで、 個の食品を食べる。 番目の食品を食べると、栄養素 を g 摂取できる。 この 個の食品を食べることで、 種類すべての栄養素を必要量以上に…

AtCoder ABC 049 B - たてなが (7Q, 灰色, 200 点)

二次元グリッドの基本問題 問題へのリンク 問題概要 のグリッドが与えられる。各マスの文字は '.' か '*' である。 このグリッドを縦方向に 2 倍に引き伸ばして出力せよ。 解法 個の文字列の入力を受け取り、各行ごとに 2 回ずつ出力していけば OK。 #includ…

AtCoder ABC 265 C - Belt Conveyor (4Q, 灰色, 300 点)

二次元グリッド上を上下左右に動いていくシミュレーション問題。無限ループの判定が少しややこしい。 問題へのリンク 問題概要 のグリッドがあり、各マスには U, D, L, R のいずれかが書かれている。それぞれ、上、下、左、右へと進む指示を表している。 た…

AtCoder ABC 205 F - Grid and Tokens (3D, 黄色, 600 点)

これはもう、editorial にある図がすべてなので備忘録程度に! 問題へのリンク 問題概要 のグリッドがある。 個の石があり、石 は、 かつ を満たすようなマス に置くことができる。 ただし、どの行・どの列についても、2 個以上の石が置かれないようにする。…

AtCoder ABC 205 E - White and Black Balls (2D, 黄色, 500 点)

カタラン数をわかっていればできる! 問題へのリンク 問題概要 正の整数 が与えられる。黒いボール 個と、白いボール 個を一列に並べる方法のうち、次の条件を満たすものの個数を 1000000007 で割った余りを求めよ。 【条件】 どの についても、列の左から …

鉄則本 B09 - Papers (2Q, ★4)

二次元いもす法の練習問題 問題へのリンク 問題概要 二次元平面上に 枚の長方形の紙がある。 枚目の紙の左下の座標は であり、右上の座標は である。 紙に覆われている部分の面積を求めよ。 制約 考えたこと 二次元いもす法の練習。 github.com コード #incl…

鉄則本 A09 - Winter in ALGO Kingdom (2Q, ★4)

二次元いもす法! 問題へのリンク 問題概要 のグリッドにおいて、 日間雪が降った。 日目には、マス を左上とし、 を右上とする長方形領域に雪が 1 cm だけ降った (溶けないとする)。 最終的な各マスの積雪量を求めよ。 制約 解法 二次元いもす法をします。…

鉄則本 A08 - Two Dimensional Sum (2Q, ★4)

二次元累積和! 問題へのリンク 問題概要 のグリッドがあり、マス には値 が書かれている。次の 個のクエリに答えよ。 【クエリ】 左上が 、右上が であるような長方形領域が与えられるので、領域内のマスに書かれた整数の総和を求めよ。 制約 解法 鉄則本に…

AtCoder ARC 176 A - 01 Matrix Again (1D, 水色, 400 点)

大敗してしまったので自戒を込めて。 問題へのリンク 問題概要 整数 が与えられる。 のグリッドであって、以下の条件を満たすものを構築せよ。 各マスの値は 0 または 1 である 個のマス の値はいずれも 1 である 行和はすべて である 列和はすべて である …

AtCoder ABC 347 F - Non-overlapping Squares (黄色, 525 点)

面白かった。JOI でもありそうな問題。長方形を 3 枚並べるのは典型らしい。 問題へのリンク 問題概要 のグリッドがあって、各マス には数値 が描かれている。 このグリッド上で の正方形を重ならないように 3 枚並べるとき、これらの正方形に覆われたマスの…

AtCoder ARC 171 A - No Attacking (茶色, 400 点)

慎重に解いた。ノーペナで解けたのは収穫。 問題へのリンク 問題概要 のグリッドに、以下の条件を満たすように 個のルークと 個のポーンを配置することが可能かどうかを判定せよ (ルークとポーンを合わせて駒と呼ぶ)。 どのルークについても、それと同じ行・…

AtCoder ABC 121 A - White Cells (9Q, 灰色, 100 点)

過去に似た問題があった。その応用問題と言える。 問題へのリンク 問題概要 の白色のマス目がある。 行と 列を選んで、すべて黒色に塗った。 白色のマス目は何個残るか。 解法 白い部分をかき集めると、 の長方形となる。 #include <bits/stdc++.h> using namespace std; in</bits/stdc++.h>…

AtCoder ABC 077 A - Rotation (7Q, 灰色, 100 点)

少し空間認識能力が問われるかもしれない。 問題へのリンク 問題概要 2 × 3 のグリッドが与えられる。各マスにはアルファベット文字が書かれている。 このグリッドを 180° 回転して一致するかどうかを判定せよ。 解法 入力を 2 つの文字列 S, T として受け取…

JOIG 2023 E - 運河 (AOJ 0761) (1D, 難易度 7)

UnionFind を使って、差分更新を頑張る! UnionFind はオンラインの処理を簡単に実現できることが強みで、それを問いかける教育的問題ですね。他にも「左右からの結果を前処理する」という典型テクも使います! 問題へのリンク 問題概要 のグリッドがあって…

JOIG 2023 D - コイン集め 2 (AOJ 0760) (1Q, 難易度 6)

データを上手に持って、差分更新する系の問題 問題へのリンク 問題概要 のグリッドがあって、各マスは文字 '#' か '.' のいずれかが書かれている。先手は '#' の個数が得点となり、後手は '.' の個数が得点となる。双方得点を最大化したい。 先手は行を 1 つ…

AtCoder ABC 330 D - Counting Ls (2Q, 茶色, 400 点)

次の問題にとても似ていた! drken1215.hatenablog.com 問題へのリンク 問題概要 のグリッドが与えられる。各マスには文字 'o' または 'x' が描かれている。これらのマスから 3 個選ぶ方法であって、 3 マスに書かれた文字はすべて 'o' である 3 マスのうち…

AtCoder ABC 225 G - X (4D, 橙色, 600 点)

2 変数劣モジュラ関数の和の最小化! 俗にいう燃やす埋める 問題へのリンク 問題概要 のグリッドがあって、各マス には値 が記されている。 いくつかのマスに「x」を描いていく。「x」は書かれるマスの左上の角と右下の角を結ぶ線分、および右上の角と左下の…

AtCoder ABC 309 B - Rotate (5Q, 灰色, 200 点)

これ、詰まる人には詰まると思う。二次元配列の添字の扱いに習熟していないと難しい。 問題へのリンク 問題概要 のグリッドが与えられる。各マス目には 0 か 1 の値が書かれている。 このグリッドに対して、外周を時計回りに 1 マス分回して得られるグリッド…

KUPC 2016 E - 柵

最小カットの練習問題。問題設定がとても面白い! 問題へのリンク 問題概要 のグリッドがある。いくつかのマスにはヤギがいる。具体的な入力では、ヤギのいるマスは文字 'X' で表される。 6 6 ...... ...... ..X... .X..X. ..X... ...... グリッドの外周は外…

AtCoder ABC 325 C - Sensors (3Q, 茶色, 300 点)

またまた登場!! グラフの連結成分の個数を求める問題! 問題へのリンク 問題概要 下図のような のグリッドが与えられる。このグリッドにおいて、上下左右と斜めに隣接している '#' は一つの塊とみなす。 このとき、グリッド内に何個の '#' の塊があるかを…

AtCoder ABC 322 D - Polyomino (1Q, 水色, 400 点)

最近、実装重たい全探索問題多いね! 問題へのリンク 問題概要 下図のようなポリオミノが 3 個与えられる。いずれも 4 × 4 グリッドにおさまるサイズであり、入力は 4 × 4 グリッドで与えられる。文字 '#' に対応する部分が与えられるポリオミノに対応する。…

JOI 予選 2007 F - 通学経路 (AOJ 0515) (3Q, 難易度 4)

DP の典型問題だけど、最初は難しく感じるかもしれない。あと、縦横が微妙に混乱するね。 問題へのリンク editorial 問題概要 (今風に表現改) のグリッドが与えられる。このグリッドで上から 番目、左から 番目のマスを と書くことにする。最初、マス に駒が…

AtCoder ABC 320 G - Slot Strategy 2 (Hard) (4D, 橙色, 600 点)

広く捉えれば「各スロットに対して止める秒数を割り当てる」方法を考える割当問題だと言えそう。 問題へのリンク 問題概要 のグリッド が与えられる。各マスには 0 から 9 までの数字が描かれている。 今、次の条件を満たす 0 以上の整数値 を考えたとき、 …

AtCoder ABC 317 G - Rearranging (橙色, 600 点)

面白かった 問題へのリンク 問題概要 のグリッドがある。各マスには数値が書かれている。 個の数値を集めると、 が 個ずつある。 今、各行について、その 個の数値を自由に並び替えていく。 その結果として、すべての列が の順列であるようにすることが可能…

AtCoder ABC 311 E - Defect-free Squares (水色, 475 点)

有名な DP をするか、二次元累積和 + 二分探索をするか 問題へのリンク 問題概要 のグリッドが与えられる。グリッドの各マスのうち、指定された 個のマスには穴があいている。その他のマスは穴があいていない。 グリッドに含まれる正方形であって、その内部…

AtCoder ABC 311 F - Yet Another Grid Task (青色, 525 点)

最初、各マスをタスクに見立てて、タスクの依存関係を考える DAG 上で DP できないかなどと考えたけど、うまくいかなかった。普通にグリッドを左から舐めていく DP でよかった! 問題へのリンク 問題概要 のグリッドがある。各マスはすでに白色 (文字 '.') …

AtCoder ABC 311 D - Grid Ice Floor (1Q, 緑色, 400 点)

壁にぶつかるまで動く設定の迷路問題! 問題へのリンク 問題概要 のグリッドがある。各マスは壁 (文字 '#') か通路 (文字 '.') かのいずれかである。グリッドの外周のマスはすべて壁であることが保証されている。 プレイヤーは最初、マス にいる (0-indexed)…

AtCoder ABC 311 G - One More Grid Task (3D, 黄色, 575 点)

黒マスを避けながら、長方形領域の値の総和を最大化する問題として解いた! 問題へのリンク 問題概要 のグリッドがあって、各マス には正の整数 が書かれている。 グリッドに含まれる長方形領域のうち、「長方形領域に含まれる値の総和」と「長方形領域に含…