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

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

そのまま覚えたい易しい教育的典型問題

AtCoder ABC 244 C - Yamanote Line Game (4Q, 灰色, 300 点)

バケットの練習を兼ねた、インタラクティブ問題! 問題へのリンク 問題概要(インタラクティブ) 最初に、正の整数 が与えられて、ゲームをする。あなたは高橋君で先手である。相手は青木君で後手である。 交互に、1 以上 以下の整数を言っていく。ただし、…

AtCoder ABC 164 C - gacha (5Q, 灰色, 300 点)

set の練習問題! 問題へのリンク 問題概要 個の文字列 が与えられる。 重複を除くと何種類の文字列があるでしょうか。 制約 文字列長さは 10 以下 考えたこと 重複を除外したいとなったら、集合型(C++ ならば set 型)が使える! 具体的には、set<string> 型の変数</string>…

AtCoder ABC 236 C - Route Map (5Q, 灰色, 300 点)

set の練習問題! 問題へのリンク 問題概要 個の文字列 と、 個の文字列 が与えられる。 について、 の中に と一致するものがあるかどうかを判定せよ。 制約 各文字列の長さは 10 以下 考えたこと set 型のよい練習問題。 を格納する集合(C++ であれば set<string> </string>…

AtCoder ABC 073 C - Write and Erase (4Q, 灰色, 300 点)

色々な解法があるが、set を使うのが楽。set のよい練習問題とも言える。 問題へのリンク 問題概要 最初何も書いていない黒板がある。次の 回の操作を行った。 回目の操作では、整数 を考える 黒板に が書かれていない場合は、新たに を黒板に書く 黒板に が…

AtCoder ABC 063 B - Varied (6Q, 灰色, 200 点)

とても教育的な易しい問題! 問題へのリンク 問題概要 英小文字からなる文字列 が与えられる。 の文字がすべて互いに相異なるかどうかを判定せよ。 解法 (1):多重 for 文 最も素朴な方法は、 から 2 文字を選ぶ方法をすべて試して、「それらが異なっている…

AtCoder ABC 062 B - Picture Frame (6Q, 灰色, 200 点)

こういう処理に慣れておくと、将来的に「番兵法」などにも使える。 問題へのリンク 問題概要 縦 ピクセル、横 ピクセルの画像があります。 各ピクセルは英小文字で表される。 この画像の周囲 1 ピクセルを # で囲んだものを出力してください。 制約 考えたこ…

AtCoder ABC 061 B - Counting Roads (5Q, 灰色, 200 点)

「グラフ」の基礎問題! グラフを知らなくても解ける。 問題へのリンク 問題概要 個の都市 () があり、 本の道路がある。 番目の道路は、都市 と都市 を結んでいる。同じ 2 つの都市を結ぶ道路は、1 本とは限らない。 各都市から他の都市に向けて、何本の道…

鉄則本 A15 - Compression (3Q, ★3)

座標圧縮せよ、という問題 問題へのリンク 問題概要 長さ の数列 が与えられるので、座標圧縮せよ。 制約 考えたこと 座標圧縮は次の記事に詳しく書いた。 drken1215.hatenablog.com コード #include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; v</bits/stdc++.h>…

鉄則本 A53 - Priority Queue (3Q, ★2)

優先度付きキューを人生で初めて試すのにいい問題。 問題へのリンク 問題概要 以下の 3 種類のクエリ ( 個) を高速に処理するプログラムを実装せよ。販売システムを模している。 クエリタイプ 1:価格が 円の商品が追加される クエリタイプ 2:今ある商品の…

鉄則本 A52 - Queue (4Q, ★2)

キューの使い方の確認! 問題へのリンク 問題概要 以下の 3 種類のクエリ ( 個) を高速に処理するプログラムを実装せよ。行列管理システムを模している。 クエリタイプ 1:行列の最後尾に さんが並ぶ クエリタイプ 2:行列の先頭にいる人の名前を答える クエ…

鉄則本 A51 - Stack (4Q, ★2)

人生で最初に解きたいスタックの問題 問題へのリンク 問題概要 以下の 3 種類のクエリ ( 個) を高速に処理するプログラムを実装せよ。 クエリタイプ 1: という題名の本を机の一番上に積む クエリタイプ 2:一番上に積まれている本の題名を答えよ クエリタイ…

AtCoder ABC 347 B - Substring (6Q, 灰色, 200 点)

set の使い方を覚えよう! 問題へのリンク 問題概要 文字列 が与えられる。 の連続する部分文字列として考えられるものの個数を求めよ。 制約 考えたこと の連続する部分文字列をすべて取り出して、それを set に格納して、そのサイズを求めれば良い。 の連…

AtCoder ABC 148 B - Strings with the Same Length (8Q, 灰色, 200 点)

楽しい for 文の練習問題! 問題へのリンク 問題概要 ともに長さが である 2 つの文字列 が与えられる。 の 1 文字目、 の 1 文字目、 の 2 文字目、 の 2 文字目、... の順に文字を連結して得られる文字列を答えよ。 考えたこと 次のように考えれば良いだろ…

AtCoder ABC 172 B - Minor Change (8Q, 灰色, 200 点)

この問題は、ハミング距離と呼ばれる超重要概念! 問題へのリンク 問題概要 2 つの長さが等しい文字列 が与えられる。次の操作を繰り返して を に変更するとき、操作回数の最小値を求めよ。 操作: の 1 文字を選んで別の文字に書き換える 制約 考えたこと …

AtCoder ABC 184 B - Quizzes (8Q, 灰色, 200 点)

for 文のいい練習問題! 問題へのリンク 問題概要 高橋君は 問のクイズに答える。最初 点であり、正解すると 1 点増加する。不正解だと 1 点減少するが、不正解前に 0 点である場合は減らない。 高橋君が各問題に正解したかどうかを表す文字列 が与えられる…

AtCoder ABC 346 C - Σ (5Q, 灰色, 250 点)

set を使おう! 問題へのリンク 問題概要 長さ の整数列 と、正の整数 が与えられる。 以上 以下の整数のうち、数列 に一度も含まれないものについての総和を求めよ。 制約 考えたこと まず、 となる。 この値から「1 以上 以下の整数のうち、数列 に一度以…

AtCoder ABC 342 A - Yay! (6Q, 灰色, 150 点)

これも色んな解法がある! 問題へのリンク 問題概要 英小文字からなる 3 文字以上 100 文字以下の文字列 が与えられる。 はある 1 文字を除いて全て同じ文字で構成されています。その異なる文字があるのは何文字目か? 制約 解法 (1):全探索 大抵の問題は、…

AtCoder ABC 231 B - Election (6Q, 灰色, 200 点)

map などの連想配列を用いて、集計処理しよう! 問題へのリンク 問題概要 選挙で 人が投票し、それぞれ名前が である候補者に投票した。 得票数が最大の候補者の名前を答えよ。なお、得票数が最大の候補者は一意に定まることが保証される。 制約 考えたこと …

AtCoder ABC 252 A - ASCII code (8Q, 灰色, 100 点)

こういう char 型の扱い方に関する問題は、より難しい問題では当たり前のように登場するので、今のうちに慣れておきたいですね。 問題へのリンク 問題概要 英小文字 a, b, …, z の ASCII 文字コードはこの順に 97, 98, …, 122 である。 97 以上 122 以下の整…

JOI 一次予選 2020 (第 3 回) C - 最長昇順連続部分列 (6Q, 難易度 3)

の制約が小さいので、「区間」を思い切って全部探索しよう! 問題へのリンク 問題概要 長さ の数列 が与えられる。 を満たすような についての、 の値の最大値を求めよ。 制約 解法 この手の問題で悩んでしまうのはもったいないと言えます! まずは、コンピ…

JOI 一次予選 2020 (第 2 回) C - 最頻値 (6Q, 難易度 3)

集計処理を練習しよう! 問題へのリンク 問題概要 以上 以下の整数からなる、長さ の数列 が与えられる。 長さ の新たな数列 を次のように定義する。 各 に対して、 を、 を満たす の個数 の最大値を求めよ。 制約 解法 問題の意味を解釈するのが難しいかも…

JOI 一次予選 2021 (第 2 回) B - ビ太郎と IOI (6Q, 難易度 2)

多重 for 文の全探索に慣れよう! 問題へのリンク 問題概要 長さ の文字列 が与えられる。次の条件を満たす 3 つ組の整数 が存在するかどうかを判定せよ。 の 文字目は 'I' である の 文字目は 'O' である の 文字目は 'I' である 制約 解法 を満たすような …

JOI 一次予選 2021 (第 1 回) C - 共通要素 (6Q, 難易度 2)

このような問題を解くためにも、「バケット」を習得しよう! 問題へのリンク 問題概要 長さ の数列 と、長さ の数列 が与えられる。 こっらの数列の双方に登場する数をすべて昇順で出力せよ。 制約 解法 (1):1 から 100 までの数を順に調べる 制約を見よう…

JOI 一次予選 2022 (第 2 回) D - 希少な数 (6Q, 難易度 2)

集計処理の面白い問題! 問題へのリンク 問題概要 長さ の数列 が与えられる。 に出現する整数のうち、出現回数が最小である整数を出力せよ。そのようなものが複数あるときは、そのうちの最小の整数を出力せよ。 制約 解法 このような出現頻度に関する問題で…

JOI 一次予選 2023 (第 2 回) C - 繰り返し文字列 (7Q, 難易度 1)

for 文の練習問題! 問題へのリンク 問題概要 英小文字からなる長さ の文字列 が与えられる。 は偶数である。 が「同じ文字列を 2 回繰り返したもの」であるかどうかを判定せよ。 制約 考えたこと 文字列 を前後で半分に割ると 文字ずつになる。よって、次の…

AtCoder ABC 308 B - Default Price (6Q, 灰色, 200 点)

回転寿司を題材にした、とても教育的な面白い問題! 問題へのリンク 問題概要 高橋君は料理を 皿分食べた。皿 の色は文字列 であった。 また、料理の価格は皿の色と対応し、各 について、色が文字列 の皿の料理は一皿 円である。 また、 のいずれとも異なる…

JOI 一次予選 2024 (第 3 回) C - 揃った文字 (7Q, 難易度 2)

とても教育的な典型問題! 問題へのリンク 問題概要 長さ の英小文字からなる文字列 が与えられる。 この文字列がすべて同じ文字で構成されているかどうかを判定せよ。 制約 考えたこと すべてが同じ文字だということは、「すべてが先頭の文字と同じ文字であ…

AtCoder ABC 358 C - Popcorn (3Q, 灰色, 300 点)

ビット全探索の典型問題! 問題へのリンク 問題概要 ポップコーンには 種類の味 がある。 一方、ポップコーンを得る 個の店 がある。各店 でどの味のポップコーンを売っているかを表す文字列 が与えられる。文字 が 'o' であるとき、店 で味 を売っているこ…

AtCoder ABC 240 B - Count Distinct Integers (6Q, 灰色, 200 点)

いろんな方法が考えられる超典型問題 問題へのリンク 問題概要 長さ の整数数列 が与えられる。 この数列に含まれる整数の種類数を答えよ。 制約 解法 set 型の知識があれば、それを用いるのが最も楽だと思う (他の方法は公式解説を参照)。C++ の set 型を用…

AtCoder ABC 178 B - Product Max (5Q, 灰色, 200 点)

「ギリギリを考える」という考察の基本形と言える問題 問題へのリンク 問題概要 整数 が与えられるので、 を満たす整数 についての の最大値を求めよ。 制約 考えたこと この手の問題で考えることは、「端点のみ考えれば良いのでは」などと疑うこと。つまり…