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

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

TTPC 2024 Div1. A - Don't Detect Cycle (5D)

面白かった! 解説 AC した! 問題へのリンク 問題概要 頂点数 、辺数 の単純無向グラフが与えられる。このグラフの辺の順列であって、次の条件を満たすものを 1 つ求めよ(なければ -1 を出力せよ)。 【条件】 頂点数 、辺数 のグラフに対して、上記の順序…

TTPC 2024 Div2. B - Self Checkout (3D)

面白かった! カタラン数的なものが登場する。 問題へのリンク 問題概要 制約 考えたこと まずすぐにわかったことは、 の中に、1 が 2 個以上あってはダメ の中に、1 が末尾以外の場所にあってはダメ ということだった。そうすると、 は次のいずれかの形にな…

AtCoder ABC 384 B - ARC Division (7Q, 灰色, 200 点)

B 問題としては易しめ。 問題へのリンク 問題概要 レーティングが の人が 回コンテストに参加した。 回目のコンテストでは、Div. のコンテストに参加して、もしレーティング更新対象者であれば、レーティングは だけ加算される(負値もありうる)。 ARC Div.…

AtCoder ABC 383 A - Humidifier 1 (6Q, 灰色, 150 点)

これ 150 点なのは解釈一致だし、難しいと思うけど、Difficulty が 19 とすごく低いのが驚き! 問題へのリンク 問題概要 今、時刻 0 で水は 0 L たまっている。 これから時刻 にそれぞれ水が L 注がれる。 なお、水が 1 L 以上あるとき、時刻が 1 経過するご…

AtCoder ABC 384 A - aaaadaa (8Q, 灰色, 100 点)

for 文の基本問題 問題へのリンク 問題概要 長さ の文字列 が与えられる。 の各文字について、文字 でないものをすべて文字 に置き換えたものを出力せよ。 考えたこと for 文の練習問題といえる。 for 文を用いて、 の各文字について、 であるかどうかを判定…

AtCoder ABC 382 B - Daily Cookie 2 (7Q, 灰色, 200 点)

近年の B 問題では最も簡単かもしれない。 問題へのリンク 問題概要 文字 .、@ からなる長さ の文字列 が与えられる。後ろから順に 個の @ を . に変えたものを出力せよ。 考えたこと for 文を用いて、添字を という降順に回していき、 S[i] == '@' のとき …

AtCoder ABC 381 A - 11/22 String (6Q, 灰色, 150 点)

ちゃんと整理するのは大変だ。落ち着いて整理しよう。 問題へのリンク 問題概要 長さ の文字列 が与えられる。 が "11/22 文字列" であるかどうかを判定せよ。 11/22 文字列であるとは、文字 1, /, 2 がこの順に並んでいて、1 と 2 の個数が等しいものをいう…

AtCoder ABC 382 A - Daily Cookie (7Q, 灰色, 100 点)

問題文がややこしい書き方をしているけど、「要するにこういうこと!」という言い換えができるといい。 問題へのリンク 問題概要 文字 ., @ からなる長さ の文字列 が与えられる。@ を左から順に 個だけ . に書き換える。 書き換えたあとの文字列に含まれる…

AtCoder ABC 381 F - 1122 Subsequence (2D, 青色, 525 点)

という制約がいかにも怪しい! 問題へのリンク 問題概要 1 以上 20 以下の整数からなる、長さ の数列 が与えられる。 この数列の部分列 (連続でなくてよい) であって、任意の整数について、その部分列に含まれる個数が 0 個または 2 個であるものを考える。 …

競プロ典型 90 問 027 - Sign Up Requests(5Q, ★2)

集合型を学ぼう! 問題へのリンク 問題概要 個の文字列 がこの順に与えられる。 初出の文字列に対して、その添字を出力せよ。 制約 解説 0-indexed で考えます。つまり、文字列を とします(出力するときには 1 を足します)。 まずは計算量のことを考えずに…

第 4 回 PAST F - 構文解析 (4Q)

集計処理した上で、再度大きい順にソートする問題 問題へのリンク 問題概要 個の文字列 が与えられる。 この列に一回以上出現する単語を、その出現回数の多い順に並べたとき 番目の単語を出力せよ(一意に決まらない場合は "ambiguous" と出力せよ)。 制約 …

AtCoder ABC 146 E - Rem of Sum is Num (1D, 青色, 500 点)

ちょっと工夫が必要な感じ 問題へのリンク 問題概要 長さ 正整数列 と、正の整数 が与えられる。 数列の区間であって、総和を で割った余りと、区間内に含まれる要素の個数とが等しいものの個数を求めよ。 制約 考えたこと 結構ややこしい。落ち着いて条件を…

AtCoder ABC 166 E - This Message Will Self-Destruct in 5s (1Q, 緑色, 500 点)

上手に式変形しよう! 問題へのリンク 問題概要 正の整数からなるサイズ の数列 が与えられる。次の条件を満たす組 の個数を求めよ。 制約 考えたこと 条件が不思議だ。普通は よりも の方が大きいことが多いのに、 となる条件を問うとは。 さて、この手の数…

AtCoder ABC 342 D - Square Pair (1Q, 緑色, 400 点)

条件を上手に言い換えよう! 問題へのリンク 問題概要 個の整数 が与えられる。 が平方数 という条件を満たすような組 の個数を求めよ。 制約 考えたこと これは「条件の言い換え」を頑張る問題。「 が平方数」という条件を扱いやすいように言い換えよう。こ…

AtCoder ABC 233 D - Count Interval (2Q, 茶色, 400 点)

「区間の値の和」を見たら、累積和をとろう!! 問題へのリンク 問題概要 数列 と整数 が与えられる。 数列の連続する区間であって、その総和が に一致するものが何個あるかを求めよ。 制約 考えたこと 0-indexed で考える。 数列 の累積和を としよう。この…

AtCoder ABC 003 B - AtCoderトランプ (6Q, 試験管茶色)

for 文の練習問題 問題へのリンク 問題概要 長さの等しい 2 つの文字列 が与えられる。 に含まれる各文字 '@' について、'a', 't', 'c', 'o', 'd', 'e', 'r' のいずれかに置き変えることで、 が一致するようにできるかを判定せよ。 制約 [tex 1 \le |S| = |T…

AtCoder ABC 137 C - Green Bin (4Q, 茶色, 300 点)

すごく面白い問題! 問題へのリンク 問題概要 個の文字列 が与えられる。 これらの文字列から異なる 2 つの文字列を選ぶ方法であって、それらの文字列が互いにアナグラムとなっているものの個数を求めよ。 制約 考えたこと まずは、問題の条件をわかりやすく…

AtCoder ABC 082 C - Good Sequence (5Q, 茶色, 300 点)

連想配列の良い練習問題! 問題へのリンク 問題概要 正の整数からなる数列が良い数列であるとは、数列に含まれる任意の整数値 について、数列中に がちょうど 個含まれていることをいう。 与えられた数列 に対して、いくつかの要素を削除することで、よい数…

CODE FESTIVAL 2017 qual B B - Problem Set (4Q, 茶色, 200 点)

素朴な map の練習問題 問題へのリンク 問題概要 りんごさんは 個の問題案を持っており、 個目の問題案の難易度は である。 ここから、配点が であるような 問からなる問題セットを作ることは可能か? 制約 考えたこと 連想配列 (C++ ならば map) の練習問題…

AtCoder ABC 342 C - Many Replacement (3Q, 茶色, 350 点)

これ実は「アルファベット文字の変換テーブルを愚直に作る」という素朴な方法が解けるけど、意外と盲点になりそうだ! 問題へのリンク 問題概要 英小文字のみからなる長さ の文字列 が与えられる。次の 回の操作を実行後の文字列を出力せよ。 【操作】 文字 …

AtCoder ABC 380 F - Exchange Game (2D, 青色, 500 点)

場からカードを手札に入れない方が良い場合があるの、すごい! あと、局面状態を数値情報にエンコードするかを迷ったけど、エンコードしなくても通った。 問題へのリンク 問題概要 はじめ、高橋君は整数 の書かれた 枚のカードを持っていて、青木君は整数 の…

AtCoder ABC 380 G - Another Shuffle Window (3D, 青色, 575 点)

公式解説の方がシンプルだった。 問題へのリンク 問題概要 の順列 と、整数 が与えられる。 の連続する 個の要素からなる区間( 通りある)をランダムに選び、さらにその区間をランダムシャッフルする。 最終的な順列の転倒数の期待値を mod 998244353 で求…

AtCoder ABC 380 E - 1D Bucket Tool (1D, 水色, 450 点)

遅延評価セグメント木と、その max_right, min_left で殴った! 問題へのリンク 問題概要 マス が一列に並んでいて、それぞれ色 で塗られている。次の 回のクエリに答えよ。 クエリタイプ 1:マス と色 が指定されるので、マス から始めて「いまいるマスと同…

AtCoder ABC 380 D - Strange Mirroring (1Q, 緑色, 350 点)

実験していくうちにシンプルな構造がわかった。 問題へのリンク 問題概要 英文字からなる長さ の文字列 が与えられる。この文字列に対して、次の操作を 回行ってできる文字列を考える。 【操作】 文字列 に対して、英小文字と英大文字を入れ替えてできる文字…

AtCoder ABC 380 C - Move Segment (5Q, 灰色, 300 点)

ランレングス圧縮で解いた 問題へのリンク 問題概要 0 と 1 からなる長さ の文字列 が与えられる。この文字列の中での「1 の塊」のうち、左から 番目のものを、 番目のものの右に移動させよ。 例:"010011100011001" → "010011111000001" 制約 考えたこと ま…

AtCoder ABC 380 B - Hurdle Parsing (6Q, 灰色, 200 点)

初歩的な構文解析問題 問題へのリンク 問題概要 "|---|-|----|-|-----|" のような、文字 '-' を文字 '|' で separate された文字列 が与えられる。 各 '-' 区間の '-' の個数を順に出力せよ。 制約 考えたこと ここでは for 文で解いてみよう。次の変数を管…

AtCoder ABC 380 A - 123233 (7Q, 灰色, 100 点)

ソートが使えるなら、それが楽だと思う 問題へのリンク 問題概要 6 桁の正の整数 が与えられる。 が次の条件を満たすかどうかを判定せよ。 1 をちょうど 1 個含む 2 をちょうど 2 個含む 3 をちょうど 3 個含む 解法 (1):1, 2, 3 の個数を数える方法 for 文…

AtCoder ARC 186 A - Underclued (4D, 橙色, 900 点)

久しぶりに高難易度問題を解いてみた! 問題へのリンク 問題概要 各マスの値が 0 または 1 である グリッドを考える。 グリッド のマス が「固定されている」とは、次の条件を満たすすべての グリッドについて、マス の値が一意に決まることをいう。 すべて…

AtCoder ABC 379 E - Sum of All Substrings (1D, 水色, 475 点)

「主客転倒・寄与分解」の典型問題! 問題へのリンク 問題概要 1 から 9 までの数字からなる 桁の整数値 が与えられる。 この整数値の連続する区間を取り出してできる整数値の総和を求めよ。(998244353 で割らない。) 制約 考えたこと この手の問題では、 …

AtCoder ABC 379 D - Home Garden (2Q, 茶色, 400 点)

「全体に足す」のは難しいから、足す値を別途持っておくというスキル!!! 問題へのリンク 問題概要 以下の 個のクエリに答えよ。 クエリタイプ 1:新たに要素 0 を挿入する(重複もあり) クエリタイプ 2:すでに挿入されているすべての要素に を足す クエ…