灰色diff
種類数に関する面白い問題! 問題へのリンク 問題概要 2 つの文字列 は、 である を左右反転してできる文字列 について、 である といういずれかの条件を満たすとき、似ているとみなす。 与えられた 個の文字列 について、似ている文字列は同一視することに…
バケットの練習を兼ねた、インタラクティブ問題! 問題へのリンク 問題概要(インタラクティブ) 最初に、正の整数 が与えられて、ゲームをする。あなたは高橋君で先手である。相手は青木君で後手である。 交互に、1 以上 以下の整数を言っていく。ただし、…
「変数を固定する考え方」と「set の活用」を組み合わせる練習問題! 問題へのリンク 問題概要 整数 と、 個の整数 が与えられる。 を満たす [tex i, j] ( でもよい) が存在するかを判定せよ。 制約 考えたこと この問題のように、 という 2 つの変数を考え…
set の練習問題! 問題へのリンク 問題概要 個の文字列 が与えられる。 重複を除くと何種類の文字列があるでしょうか。 制約 文字列長さは 10 以下 考えたこと 重複を除外したいとなったら、集合型(C++ ならば set 型)が使える! 具体的には、set<string> 型の変数</string>…
set の練習問題! 問題へのリンク 問題概要 個の文字列 と、 個の文字列 が与えられる。 について、 の中に と一致するものがあるかどうかを判定せよ。 制約 各文字列の長さは 10 以下 考えたこと set 型のよい練習問題。 を格納する集合(C++ であれば set<string> </string>…
いろんな解法がある。ここでは、ソートで解いてみよう! 問題へのリンク 問題概要 長さ の数列 と、長さ の数列 が与えられる。 各数列から要素 を選んだときの差 の最小値を求めよ。 制約 考えたこと 本当にいろいろな解き方がある。その中でも易しいのは、…
初歩的な Greedy の問題と言える。 問題へのリンク 問題概要 以上 以下の整数からなる数列 であって、 は で割り切れる という条件を満たすものを考える。そのような数列の長さの最大値を求めよ。 制約 考えたこと 基本的には、なるべく小さい値でスタートし…
整数の「各桁の和」を求める問題 問題へのリンク 問題概要 1 以上 以下の整数のうち、10 進法での各桁の和が 以上 以下であるものの総和を求めてください。 考えたこと まず、整数 の各桁の和を求める方法を確認しておこう。それについては、この記事に書い…
整数値の各桁の値の和を求める方法を確認しておこう! 問題へのリンク 問題概要 整数 を十進法で表したときの各桁の数字の和が、 を割り切るとき、 をハーシャッド数という。 与えられた整数 がハーシャッド数であるかどうかを判定せよ。 解法 整数 の各桁の…
全探索しよう! こういう問題で、ただちに「全探索しよう」と思えるかどうかがすごく大事! 問題へのリンク 問題概要 長さの等しい文字列 が与えられる。 に対して、次の操作を高々 1 回実行することで、 に一致させられるかどうかを判定せよ。 (操作) の隣…
A 問題としては、少し難しめな感じ。 問題へのリンク 問題概要 1, 2, 3, 4, 5 を並び替えて得られる数列 が与えられる。この数列に対して 「隣接する様子を swap する」 という操作をちょうど 1 回だけ行って、単調増加にできるかどうかを判定せよ。 考えた…
ABC-C の最易候補! ビット全探索でもいいが、8 通りだけなので if 文の羅列でも OK。 問題へのリンク 問題概要 4 つの整数 が与えられる。 □ □ □ = 7 となるように、□ に + または - を入れよ。 制約 考えたこと □ は 3 個ある。それぞれに「+」と「-」の…
Greedy の本当に初歩の問題といえる。 問題へのリンク 問題概要 整数 1 がある。この整数に対して、以下のいずれかの操作を 回行う。 操作 A:整数値を 2 倍する 操作 B:整数値に を足す 操作後の整数値の最小値を求めよ。 制約 考えたこと 基本的に、「も…
色々な解法があるが、set を使うのが楽。set のよい練習問題とも言える。 問題へのリンク 問題概要 最初何も書いていない黒板がある。次の 回の操作を行った。 回目の操作では、整数 を考える 黒板に が書かれていない場合は、新たに を黒板に書く 黒板に が…
for 文または while 文の練習問題 問題へのリンク 問題概要 正の整数 が与えられる。ある正の整数 が存在して を満たすことが保証される。 を求めよ。 制約 考えたこと と計算を続けていって、 に一致したところで break して、そのときの値を答えればよい。…
基本的な文字列操作の問題! 問題へのリンク 問題概要 文字列 が与えられる。 の先頭の文字に "UPC" を付け加えてできる文字列を出力せよ。 考えたこと 文字列 S の先頭の文字は S[0] によって取得できる。その文字を出力したあと、続けて "UPC" を出力すれ…
完全既出は珍しい! 問題へのリンク 問題概要 "6x4" のような、「一桁かける一桁」の計算を表す 3 文字の文字列 が与えられる。この計算結果を求めよ。 考えたこと この問題と完全に同じですね。 drken1215.hatenablog.com コード #include <bits/stdc++.h> using namespace</bits/stdc++.h>…
久しぶりに簡単な問題の到来! 問題へのリンク 問題概要 正の整数 が与えられるので、 の二乗の値を出力せよ。 考えたこと の二乗は、 (A + B) * (A + B) によって計算できる。これを実装すればよい。 コード #include <bits/stdc++.h> using namespace std; int main() { i</bits/stdc++.h>…
いろんな解法が考えられる。 問題へのリンク 問題概要 4 枚のカードがあって、それぞれのカードには整数 が書かれている。 ここに 1 枚カードを加え、フルハウスとできるか判定せよ。 制約 考えたこと 色んな解法が考えられるが、この手のものは「ソート」が…
全探索に慣れよう! 問題へのリンク 問題概要 同じ文字列を二個連結してできるような文字列を「偶文字列」とよぶ。 与えられた偶文字列 について、末尾の文字を 1 文字以上消して作れる偶文字列のうち、その最大長を答えよ。 制約 考えたこと 全探索しよう!…
この手のものは関数化するのがオススメ! 問題へのリンク 問題概要 正の整数 が与えられる。 以上 以下の整数のうち、2 で割れる回数が最大のものを求めよ(タイがないことが証明できる)。 制約 考えたこと 全探索しよう! 具体的には、 について、「 を 2 …
現代の AtCoder にはあまりない「一行読み込み」を要求する問題 問題へのリンク 問題概要 "Left Left Right Right AtCoder" のように、"Left", "Right", "AtCoder" のいずれかを空白区切りで連結した文字列が一行で与えられる。 "Left" は "<" に replace し…
ソートの練習! 問題へのリンク 問題概要 個の整数 から 選んで総和をとる。 総和を取った値の最大値を求めよ。 制約 考えたこと 個の整数 を大きい順に並べておいて、大きい順に 個とって足せばよい。 C++ では、大きい順にソートするのは sort(l.begin(), …
ちょっと発想が必要な問題。 問題へのリンク 問題概要 個の家が並んでいる。 個目の家は座標 にある。このすべての家にプレゼントを配る。 好きな場所から開始し好きな場所で終了することができるとき、最小の移動距離を求めよ。 制約 考えたこと 下の図のよ…
とても教育的な易しい問題! 問題へのリンク 問題概要 英小文字からなる文字列 が与えられる。 の文字がすべて互いに相異なるかどうかを判定せよ。 解法 (1):多重 for 文 最も素朴な方法は、 から 2 文字を選ぶ方法をすべて試して、「それらが異なっている…
こういう処理に慣れておくと、将来的に「番兵法」などにも使える。 問題へのリンク 問題概要 縦 ピクセル、横 ピクセルの画像があります。 各ピクセルは英小文字で表される。 この画像の周囲 1 ピクセルを # で囲んだものを出力してください。 制約 考えたこ…
「グラフ」の基礎問題! グラフを知らなくても解ける。 問題へのリンク 問題概要 個の都市 () があり、 本の道路がある。 番目の道路は、都市 と都市 を結んでいる。同じ 2 つの都市を結ぶ道路は、1 本とは限らない。 各都市から他の都市に向けて、何本の道…
二次元グリッド上のシミュレーション問題! 問題へのリンク 問題概要 のグリッドが与えられる。各マスは '.':通路マス '#':壁マス '@':アイテムマス のいずれかである。最初、マス にいる。 今、グリッド上で文字列 に示す移動をする(U, D, L, R のいず…
場合分けを頑張ろう! 問題へのリンク 問題概要 3 つの整数 をいくつかのグループに分けて、各グループに含まれる整数の総和を等しくできるかを判定せよ。 考えたこと 次の 2 つの場合が考えられる。 2 つのグループに分けて、総和を等しくする 3 つのグルー…
B 問題としては易しめ。 問題へのリンク 問題概要 レーティングが の人が 回コンテストに参加した。 回目のコンテストでは、Div. のコンテストに参加して、もしレーティング更新対象者であれば、レーティングは だけ加算される(負値もありうる)。 ARC Div.…