AtCoder200点
二次元配列の練習問題 問題へのリンク 問題概要 の形状に並べられた行列が与えられる。行列の各要素は 0 以上 26 以下の整数値である。 今、この行列の各要素に対応して 0 は文字 '.' に 1〜26 はそれに対応するアルファベット文字に 置き換えて得られる の…
回転寿司を題材にした、とても教育的な面白い問題! 問題へのリンク 問題概要 高橋君は料理を 皿分食べた。皿 の色は文字列 であった。 また、料理の価格は皿の色と対応し、各 について、色が文字列 の皿の料理は一皿 円である。 また、 のいずれとも異なる…
long long 型だとオーバーフローしてしまうので注意! unsigned long long 型なら大丈夫! 問題へのリンク 問題概要 0 と 1 からなる長さ 64 の数列 が与えられる。 の値を求めよ。 考えたこと 実は long long 型は、 以上 以下の整数しか表せない。今回扱う…
一見面倒そうに思える問題 問題へのリンク 問題概要 直線上に 7 点 A, B, C, D, E, F, G が下図のような間隔で並んでいる。 2 点を示すアルファベット が与えられるので、それらの間の距離を求めよ。 考えたこと 一見すごく面倒そうな問題だけど、工夫次第で…
元ネタのあるシミュレーション問題 問題へのリンク 問題概要 高橋君は英小文字からなる文字列 をキーボードで入力しようとしました。 高橋君は誤って別の英小文字を入力してしまったときにはその直後にバックスペースキーを押しましたが、バックスペースキー…
for 文の練習問題! 問題へのリンク 問題概要 個の商品があって、それぞれ価格は 円である。これらをすべて購入する。 ただし、最高価格のものは半額となる。このとき、支払い金額の総和を求めよ。 制約 は偶数 解法 について、 総和を 最大値を としよう。…
この手のシミュレーションになれることはとても大事! 問題へのリンク 問題概要 あるチケット売り場は、待合行列がなければ、来た人の受付に 秒かかる。 人の人 は、それぞれ時刻 に到着する。まだ受付されていない人がいる場合は後ろに並ぶ。 人 がそれぞれ…
問題文の理解が大変かもしれない。 問題へのリンク 問題概要 英小文字からなる文字列 が与えられる。次の条件を満たす 2 角整数 () が存在しるかどうかを判定せよ。 「文字列 を 文字ごとに分割したとき、各分割された文字列の 文字目を連結して得られる文字…
二次元配列の基本問題! ただし、問題文の意味を理解するのが少し大変かもしれない。 問題へのリンク 問題概要 のグリッドがある。グリッドの各文字は最初はすべて '.' である。今、 を満たす整数 をとり、 かつ を満たすマス の文字を '#' へと書き換えた。…
全探索でやってしまうのが楽だと思われる。 問題へのリンク 問題概要 正の整数 が与えられる。 をともに割り切る整数のうち、 番目に大きいものを求めよ。 制約 をともに割り切る整数のうち、 番目に大きいものが存在する 考えたこと 全探索で解いてしまうの…
いろんな方法が考えられる超典型問題 問題へのリンク 問題概要 長さ の整数数列 が与えられる。 この数列に含まれる整数の種類数を答えよ。 制約 解法 set 型の知識があれば、それを用いるのが最も楽だと思う (他の方法は公式解説を参照)。C++ の set 型を用…
「ギリギリを考える」という考察の基本形と言える問題 問題へのリンク 問題概要 整数 が与えられるので、 を満たす整数 についての の最大値を求めよ。 制約 考えたこと この手の問題で考えることは、「端点のみ考えれば良いのでは」などと疑うこと。つまり…
文字列の大文字・小文字変換もできるようにしていきたい。 問題へのリンク 問題概要 英大文字または英小文字からなる文字列 が与えられる。 大文字の個数が小文字の個数よりも多い場合は、すべて大文字に変換し、そうでない場合はすべて小文字に変換して出力…
ソートの練習! 問題へのリンク 問題概要 長さ の数列 と、長さ の数列 が与えられる。なお、これら 個の値はすべて互いに相異なる。 これらをすべて混ぜた 個の値を小さい順に並べたとき、数列 の要素が 2 個以上連続する箇所があるかどうかを判定せよ。 制…
文字列の動きをシミュレーションしながら最大値も更新していく! 問題へのリンク 問題概要 整数 を持っていて、最初は 0 である。 長さ の文字列 に従って、これを使って 回の操作を行った。 回目の操作では、文字 が 'I' ならば を 1 増やし、'D' ならば を…
mod 998244353 の練習! 問題へのリンク 問題概要 非負整数 が与えられる。 を 998244353 で割った余りを求めよ。 制約 考えたこと 「足し算・引き算・かけ算」をした計算結果を 998244353 で割った余りを求める方法論については、次の記事に詳しく書いた。 …
制約が と大きいので、ちゃんと整数論的処理をしないといけない! 問題へのリンク 問題概要 以上 以下の整数のうち、 の倍数は何個あるか? 制約 考えたこと 制約が と極めて大きいので探索手法で解くことは難しい。数学的に求めることを考える。 まず、「 …
二次元グリッドの基本問題 問題へのリンク 問題概要 のグリッドが与えられる。各マスの文字は '.' か '*' である。 このグリッドを縦方向に 2 倍に引き伸ばして出力せよ。 解法 個の文字列の入力を受け取り、各行ごとに 2 回ずつ出力していけば OK。 #includ…
これ結構難しい! 数式を丁寧に立てよう。 問題へのリンク 問題概要 箱に水色のボールが 個入っている。 「箱に 個の水色のボールと、 個の赤色のボールを入れる」という操作を繰り返すことで、赤色のボールの個数が水色のボールの個数の 倍以上となるように…
いろんな方法が考えられる! 問題へのリンク 問題概要 1 以上 以下の整数からなる数列 が与えられます。 この数列が を並び替えられることで得られるかどうかを判定せよ。 制約 考えたこと 問題文は「 を並び替えることで に一致させられるか」を問いかける…
文字列を辞書順にソートする方法を確認しておこう! 問題へのリンク 問題概要 人のユーザーがいて、 人目の名前は 、レーティングは である。 レーティングの総和を で割った余りを としたとき、各ユーザーの名前のうち、辞書順で小さい順に 番目のものを求…
古き良き、ABS にも収録した問題! 問題へのリンク 問題概要 個の整数 が与えられる。 これらの整数の中に、相異なる整数は何種類あるかを求めよ。 制約 解法 最も簡単な方法は、集合型 set 型を用いる方法だと思われる。set は 要素の挿入 (集合に要素 を挿…
繰り返し回数を計算する必要もない、本当に愚直なシミュレーション! 問題へのリンク 問題概要 人乗りのゴンドラアトラクションに対して、 組のグループが待機している。グループ の人数は 人である ( が保証される)。 各グループに対して、順に グループ人…
「集計処理」の基本問題! 問題へのリンク 問題概要 (意訳) 個の LED が最初はすべて光っている。 回の処理を行う。 回目の処理では 番目の LED の状態を flip する (光っていたら消して、消えていたら光らせる)。 最終的に何個の LED が光っているかを求め…
問題の理解がちょっと大変。数学の素養がないと厳しいかもしれない。 問題へのリンク 問題概要 正の整数 ( を満たす) が与えられる。 また、 個の整数 が与えられるので、各 について、次の条件を満たす整数 を求めよ。 である 以上 以下の任意の整数 に対し…
昔の ABC B 問題って感じ! 問題へのリンク 問題概要 長さ の数列 が与えられる。すべての値が等しいわけではないことが保証される。 これらのうち、最大値でない中での最大値を求めよ。 解法 まず for 文を回すなどして、 個の値 の最大値を求める。たとえ…
少し複雑めの全探索。 問題へのリンク 問題概要 1 年が ヶ月からなる暦がある。 月はそれぞれ 日ある。 この暦において、ゾロ目に日付は何日あるかを答えよ。 制約 考えたこと について順に調べていけば良い。 自体がゾロ目でないとダメ がゾロ目なら、その…
素直に for 文で探索すればよいのだけど、意外と A をどこまで探索すればいいのかの判断も難しくて、戸惑った人も多いかもしれない。 問題へのリンク 問題概要 正の整数 が与えられる。 となる正の整数 を求めよ。存在しない場合は -1 を出力せよ。 制約 考…
最長回文を求める問題! 問題へのリンク 問題概要 文字列 が与えられる。 の連続する部分文字列のうち、回文であるものについて、最長の長さを求めよ。 考えたこと この問題は次の 2 ステップに分かれている。 の連続する部分文字列を全種類抜き取る それら…
これ、詰まる人には詰まると思う。二次元配列の添字の扱いに習熟していないと難しい。 問題へのリンク 問題概要 のグリッドが与えられる。各マス目には 0 か 1 の値が書かれている。 このグリッドに対して、外周を時計回りに 1 マス分回して得られるグリッド…