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

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

多重for文

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

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

AtCoder ABC 351 B - Spot the Difference (7Q, 灰色, 200 点)

二次元配列を二重 for 文で調べる最低ライン! 問題へのリンク 問題概要 のグリッドにアルファベット文字が書かれたものが 2 つ () 与えられます。 これらは 1 箇所のみ異なっていることが保証されます。 であるような を答えてください。 制約 解法 (C++) …

鉄則本 B03 - Supermarket 1 (6Q, ★2)

「組」を全探索する問題! 問題へのリンク 問題概要 個の整数 から 3 個選んで、その和を 1000 にすることが可能かどうかを判定せよ。 解法 github.com コード #include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; vector<int> A(N); for (int i = 0; </int></bits/stdc++.h>…

鉄則本 A03 - Two Cards (7Q, ★1)

二重 for 文の練習! 鉄則本の例題なので解法はメモ程度に。 問題へのリンク 問題概要 2 つの数列 と が与えられる。 これらから要素を 1 つずつ選び、和が となるようにすることが可能か判定せよ。 メモ 二重の for 文を使おう! コード #include <bits/stdc++.h> using na</bits/stdc++.h>…

JOI 一次予選 2024 (第 1 回) D - 現れている数字 (6Q, 難易度 2)

とても教育的な問題ですね。 問題へのリンク editorials 問題概要 0 以上 9 以下の整数からなる、 個の整数 が与えられる。 数列 の中に一度以上登場する整数を小さい順に出力せよ。 解法 (1):値 0, 1, ..., 9 について個別に全探索 1 つめの解法は まず、…

AtCoder ABC 329 C - Count xxx (灰色, 300 点)

ランレングス圧縮の典型題! なお、ランレングス圧縮は鹿本でみっちり解説している。 問題へのリンク 問題概要 英小文字のみからなる長さ の文字列 が与えられる。 の連続する部分文字列のうち、1 種類の文字のみからなる文字列の種類数を答えよ。 制約 考え…

AtCoder ABC 327 C - Number Place (灰色, 250 点)

9 × 9 に並んだ数字が「数独」の解になっているかを判定する問題 問題へのリンク 問題概要 下のような 9 × 9 グリッドが与えられる。各マスの値は 1 から 9 までの整数値である。 このグリッドが数独の要件を満たすかを判定せよ。 1 2 3 4 5 6 7 8 9 4 5 6 7…

AtCoder ABC 299 A - Treasure Chest (灰色, 100 点)

3 重の for 文を書くのが楽だと思う 問題へのリンク 問題概要 3 種類の文字 .、|、* からなる、長さ の文字列 が与えられる。 には | がちょうど 2 つ、* がちょうど 1 つ含まれる。 * が 2 つの | に挟まれているかどうかを判定せよ。 考えたこと 色々な解…

AtCoder ABC 320 B - Longest Palindrome (灰色, 200 点)

最長回文を求める問題! 問題へのリンク 問題概要 文字列 が与えられる。 の連続する部分文字列のうち、回文であるものについて、最長の長さを求めよ。 考えたこと この問題は次の 2 ステップに分かれている。 の連続する部分文字列を全種類抜き取る それら…

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

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

AtCoder ABC 261 B - Tournament Result (灰色, 200 点)

二次元配列を調べる練習問題! 問題へのリンク 問題概要 人のリーグ戦の戦績表が下図のように与えられる。'W' は勝ち、'L' は負け、'D' は引き分けを表す。また、対角線上は '-' である。 4 -WWW L-DD LD-W LDW- この戦績表が矛盾しているかどうかを調べよ。…

AtCoder ABC 319 B - Measure (灰色, 200 点)

問題文で書かれた通りに実装するだけなのだが、問題文の内容を理解するのが大変で、戸惑った人も多いかもしれない。 問題へのリンク 問題概要 正の整数 が与えられるので、次のようにして定まる 文字の文字列 を出力せよ。 に対して、1 以上 9 以下の の約数…

AtCoder ABC 323 C - World Tour Finals (灰色, 250 点)

1 つ 1 つの要素は難しくないが、実装がとにかく重たい!落ち着いて整理して考えたい問題。 問題へのリンク 問題概要 プレイヤー が、配点が である 個の問題からなるコンテストに挑んでいる。なお、 は 以上 以下の の倍数である。 プレイヤー には最初から…

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

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

JOIG 2023 B - 絶対階差数列 (AOJ 0758) (6Q, 難易度 2)

いわゆる「愚直シミュレーション」と呼ばれる分野の問題ですね。問題文で指示されたことを、とにかく愚直に忠実に実装できるかが問われています。地味な印象を受けるかもですが、大切なスキルです! 問題へのリンク 問題概要 黒板に、はじめ 個の整数値 が書…

JOI 予選 2007 B - 未提出者は誰だ (AOJ 0511, 難易度 2)

for 文を二重にしたり、フラグを管理したりする練習! 問題へのリンク editorial 問題概要 個の整数値が与えられる。これらの整数値は 以上 以下の整数から 2 個を除外したものとなっている。 その除外された 2 個の整数値を小さい順に答えよ。 考えたこと …

AtCoder ABC 311 B - Vacation Together (灰色, 200 点)

二次元配列を活用する練習問題。また、「条件が連続する区間」を求める練習問題でもある。 問題へのリンク 問題概要 のグリッドが与えられる。各マスの値は 'o' か 'x' のいずれかである。 「どの行も文字 'o' であるような列」が最長で何個連続するかを求め…

AtCoder ABC 305 C - Snuke the Cookie Picker (灰色, 300 点)

楽な実装がないかと探す系の問題 問題へのリンク 問題概要 のグリッドにおいて、以下の操作が施されたものが入力として与えられます。 はじめ、グリッドのすべてのマスの文字は '.' である グリッドの部分長方形であって縦横のサイズがそれぞれ 2 以上である…

AtCoder ABC 296 D - M<=ab (緑色, 400 点)

「ある量を固定して考えるとよい」「 まで調べればよい」という 2 つの典型を組み合わせて解ける問題ですね! 問題へのリンク 問題概要 正の整数 が与えられる。 以上の整数のうち、 以上 以下の 2 つの整数 の積 として書ける最小の整数を求めよ。 そのよう…

AtCoder ARC 160 B - Triple Pair (水色, 500 点)

これ系は好き! これに近いのを ABC-D で最近よく見かける気がする。 問題へのリンク 問題概要 整数 が与えられる。 3 つの整数の組 であって、 がすべて 以下であるようなものの個数を 998244353 で割ったあまりを求めよ。 ケース与えられる。 制約 考えた…

AtCoder ABC 286 C - Rotate and Palindrome (茶色, 300 点)

慣れれば解ける問題だけど、最初は「固定する」という考え方が難しいかもしれない。 問題へのリンク 問題概要 長さ の文字列 が与えられる。この文字列に対して、次の操作を繰り返すことで回文にしたい。 先頭の文字を末尾に移動する (コスト ) 文字を 1 つ…

AtCoder ABC 087 C - Candies (ARC 090 C) (灰色, 300 点)

単純な全探索で解ける! 累積和で高速化したり DP したりしても OK 問題へのリンク 問題概要 のマス目があり、上から 行目、左から 列目のマスをマス と表すことにする。マス には ​ 個のアメが置かれている。 あなたははじめ、左上のマス にいる。 右方向ま…

AtCoder ABC 196 C - Doubled (灰色, 300 点)

いわゆる、 まで調べれば十分というタイプの問題だね。最近そのタイプの問題が流行っている気がする! 問題へのリンク 問題概要 十進法表記で偶数桁で、かつ、その前半と後半とが文字列として等しいようなものを「良い整数」と呼ぶことにします。 以上 以下…

AtCoder ABC 186 C - Unlucky 7 (灰色, 300 点)

整数 の各桁の値を取り出す方法さえわかれば!! 問題へのリンク 問題概要 以上 以下の整数のうち、10 進法で表しても 8 進法で表しても 7 を含まないようなものの個数を求めよ。 制約 考えたこと まず、整数 が与えられたときに、それを 10 進法で表したと…

JOI 春合宿 2013 day1-4 JOI Poster (難易度 6)

幾何だ!! ジャッジページへのリンク editorial 問題概要 の長方形の紙上に 個の点がある。これらの点は互いに相異なる。 これらの点から 4 つの点 A, B, C, D を選ぶ (選ぶ順番も考慮する)。そして、点 A を中心として点 B を通る円を O1 とし、点 C を中…

AtCoder ABC 181 C - Collinearity (灰色, 300 点)

幾何っぽい問題。確かに数学ゲーではあるのだけど、平行判定は「計算幾何」の知見として習得してしまっても良さそう。 問題へのリンク 問題概要 二次元平面上に 個の点 () が与えられる。 これらのうちの 3 点であって、同一直線上にあるものが存在するかど…

AISing Programming Contest 2020 C - XYZ Triplets (灰色, 300 点)

ごとに考えるのではなく、集計する考え方をするのがポイント!!! 問題へのリンク 問題概要 正の整数 が与えられる。各 に対して、 は正の整数 を満たすような の組の個数を求めよ。 制約 考えたこと 最初に特定の整数 に対して は正の整数 を満たす の個数…

AOJ 1618 池のある庭園 (ICPC 国内予選 2017 C) (150 点)

この手の、単純だけど for 文ネストがエグい全探索、案外 AtCoder で見ないかもしれない 問題へのリンク 問題概要 の二次元グリッドが与えられる。各グリッドには 0 以上 9 以下の整数値が書かれている。 グリッド上で、以下の条件を満たす長方形領域を考え…

AtCoder ABC 144 C - Walk on Multiplication Table (灰色, 300 点)

約数列挙!!! 問題へのリンク 問題概要 正の整数 が与えられる。 を満たすような正の整数 の組をすべて考えたときの、 の最小値を求めよ。 制約 考えたこと これはまさに約数列挙の問題!!! 以下の記事の「3. 約数列挙」のところで、本質的に同じ問題の…

AtCoder ABC 162 C - Sum of gcd of Tuples (Easy) (灰色, 300 点)

素直に for 文を回して全部足せば OK!!! なお、3 つの整数の最大公約数の求め方に注意。 問題概要 を満たすすべての整数 の組に対しての、 の総和を求めよ。 制約 考えたこと 素直に 通りの組について、GCD を求めて合計しても間に合う。なお、3 つの整数…