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

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

不変量

AtCoder ABC 323 D - Merge Slime (緑色, 425 点)

素朴なシミュレーションが通るものの、それを正確に実装するのも結構大変 問題へのリンク 問題概要 種類のスライムがいる。 種類目のスライムは、サイズが であり、 体いる。 一般にサイズが であるスライムを 2 体合体させて、新たにサイズが のスライムを …

AtCoder AGC 059 A - My Last ABC Problem (青色, 500 点)

ひたすらに迷走してしまった。今回の記事は解説というより、個人的備忘録として書く。 問題へのリンク 問題概要 一般に、'A' と 'B' と 'C' の 3 種類の文字からなる文字列 のスコアを次のように定める 文字列 に対して、以下の操作を繰り返し実施していく。…

AtCoder ARC 117 C - Tricolor Pyramid (青色, 600 点)

面白かった。リハビリになった。 問題へのリンク 問題概要 長さ の "B", "W", "R" からなる文字列が与えられます。これに対して、次の操作を 回繰り返して、最終的に得られる文字 (1 文字) を答えよ。 それぞれの隣り合う 2 文字に対して それらが同じ文字な…

Codeforces Round #673 (Div. 1) B. Make Them Equal (R2000)

こどふぉ特有の 回以下の操作で〜を達成せよ、という問題 問題へのリンク 問題概要 長さ の正の整数からなる数列 が与えられる。以下の操作を 回以下繰り返すことで、数列の値がすべて等しくなるようにしたい。そのような操作列を一つ求めよ。不可能である場…

AtCoder ARC 110 E - Shorten ABC (赤色, 800 点)

コンテスト中に間に合わなかった。あと、僕の考察は XOR の言葉ではなかったけど、よく考えたら XOR と等価だった。 問題へのリンク 問題概要 "A", "B", "C" のみからなる長さ の文字列 が与えられる。この文字列に以下の操作を好きな順序で好きな回数だけ行…

AtCoder AGC 049 B - Flip Digits (緑色, 600 点)

簡単なバグを埋め込んでしまった... 問題へのリンク 問題概要 長さ の "0" と "1" のみからなる 2 つの文字列 が与えられる。 に対して以下の操作を繰り返し行うことで に一致させることができるかどうかを判定し、可能ならば最小回数を求めよ。 中の "01" …

AtCoder AGC 020 A - Move and Win (灰色, 300 点)

シンプルだけど、すごい好き 問題へのリンク editorial 問題概要 マス と区切られた マス上でゲームする。 Alice は最初マス に、Bob は最初マス にいる。交互に左右どちらかに動かす。ただし「マスの外」や「相手のいるマス」には動かせない。 先に動かせな…

Codeforces Round #681 (Div. 1) B. Identify the Operations (R1800)

どんな風に操作しようとも、毎回「左右のうちの何個選べるか」が変わらない!! 問題へのリンク 問題概要 の順列 と、空の配列 が与えられる。これらに対して以下の操作を 回行うことで、配列 が に一致した状態にしたい。 そのような操作方法が何通りあるか…

Codeforces Round #680 (Div. 1) B. Divide and Sum (R1900)

本番は「どのように に分けても絶対値和は等しい」ということに気づかず、ものすごくエグい二項係数計算を頑張って綺麗な表式を得た。 問題へのリンク 問題概要 長さが の数列 が与えられる。 数列を 個ずつのペア (順序の違いは考慮する) に分ける方法は 通…

AtCoder ARC 105 B - MAX-=min (灰色, 300 点)

操作が「Euclid の互除法」っぽくなっている系の問題!!!そういう系の問題は次の一覧で示してる drken1215.hatenablog.com 問題へのリンク 問題概要 個の正の整数 に対して次の操作を繰り返し行う。 個の整数の最大値を 、最小値を とする。 なら手続きを…

AOJ 3177 Painting (HUPC 2020 day3-F)

こういうの楽しいよね! 問題へのリンク 問題概要 個のマスが横一列に並んでいます。各マスは赤、青、黄、緑のいずれか 1 色で塗られている ("RBYG" からなる長さ の文字列 で与えられる)。 以下の操作を好きな順序で好きな回数だけ行えます。文字列 を作る…

AtCoder ARC 094 F - Normalization (赤色, 700 点)

これ系、この問題以降はたくさん見るようになったけど、この問題が先駆けとなった気がする 問題へのリンク 問題概要 'a', 'b', 'c' のみからなる長さ の文字列 が与えられる。 に以下の操作を好きな順序で好きな回数だけ行って得られる文字列が何通りあるか…

AtCoder ABC 140 D - Face Produces Unhappiness (緑色, 400 点)

ABC では数少ない発想力系。 問題へのリンク 問題概要 L と R から成る 文字の文字列 が与えられる。文字列のスコアは次のようにして決められる。 各 index i について S[ i ] = 'L' ならば、i + 1 >= 0 かつ S[ i - 1 ] = 'L' のときに限り、1 を加算 S[ i …

Codeforces Round #598 (Div. 3) F. Equalizing Two Strings (R2200)

誤読したーーーーーー操作は 1 回しか行えないものと思って悩んでた 問題へのリンク 問題概要 長さ の文字列 が与えられる。以下の操作を好きな回数だけ行うことで、 と とが一致する状態にすることが可能かどうかを判定せよ。 1 以上 以下の整数 を定める …

AtCoder AGC 018 A - Getting Difference (緑色, 300 点)

操作の仕方が Euclid の互除法そのものになっているタイプの問題。 問題へのリンク 問題概要 要素数 の数列 が与えられる。これに対して以下の操作を好きな回数だけ行うことができる: 整数を 2 つ選び、その差の絶対値をとり、それを数列に新たに挿入する 整…

AtCoder AGC 043 B - 123 Triangle (青色, 700 点)

答えが 0, 1, 2 の三通りしかないとなれば、mod で絞るのをやりたくなる! 受験数学では定番のテクニックだ!!! 問題へのリンク 問題概要 長さ の、1, 2, 3 のみからなる数列が与えられる。この数列に対して、 隣接する要素の差を書き出す という操作を、…

Codeforces Round #625 (Div. 1) D. Reachable Strings (R2500)

まさか残り 25 分で通し切れるとは思わなかった! 問題へのリンク 問題概要 長さ の '0' と '1' のみからなる文字列 が与えられる。以下の 個のクエリに答えよ 各クエリは left, right, len からなる 部分文字列 A = S[left : left + len], B = S[right: rig…

DISCO ディスカバリーチャンネル 2020 予選 D - Digit Sum Replace (青色, 500 点)

すごく面白かった! 問題へのリンク 問題概要 ある数値が与えられる。ただしその数値は非常に桁数が大きいことがあるので、数値を 10 進法で表したときの文字列をランレングス圧縮した状態で与えられる。具体的には 組の値 が与えられて、 の順に、数値 が …

AtCoder AGC 014 A - Cookie Exchanges (灰色, 300 点)

何回も何回も操作すると同じことになる系 問題へのリンク 問題概要 3 つの整数 があたえられる。以下の操作を行えなくなるまで繰り返す: 3 つの整数の中に奇数が 1 個でもあったら終了 すべて偶数だったら を に置き換える 操作を何回行うか?無限に行う可能…

AtCoder AGC 002 B - Box and Ball (緑色, 400 点)

うまくシミュレーションする系 問題へのリンク 問題概要 N 個の箱があります。 箱は 1 から N まで番号が振られています。 最初、1 番目の箱には赤いボールが 1 個入っています。 また、2~N 番目の箱には白いボールが 1 個ずつ入っています。 高橋君は M 回…

AtCoder AGC 003 C - BBuBBBlesort! (水色, 600 点)

楽しかった 問題へのリンク 問題概要 長さ の数列 が与えられる。どの 2 要素も互いに相異なることが保証される。これに対し 隣り合う 2 要素を swap する 連続する 3 要素を反転する という操作を行ってソートしたい。ただし、1 の使用回数を最小にしたい。…

AtCoder AGC 033 C - Removing Coins (青色, 800 点)

これ大好き!!! 問題へのリンク 問題概要 頂点のツリーが与えられる。 初期状態ではすべての頂点に 1 枚ずつコインが乗っている。先手と後手が交互に コインが 1 枚以上乗っている頂点を 1 つ選び、その頂点のコインを取り除き その頂点以外の全頂点につい…

AtCoder ABC 125 D - Flipping Signs (緑色, 400 点)

操作をいい感じに言い換える感じ 問題へのリンク 問題概要 個の要素 が与えられる。これに対し、以下の操作を好きなだけ行える。 隣り合う 2 要素をともに -1 倍する 操作後の数列の値の和として考えられる最大値を求めよ。 制約 考えたこと こういう「操作…

AtCoder AGC 010 A - Addition (灰色, 300 点)

メッチャシンプルで大好きなパリティ問題!!! ABS 記事の最終問題の類題にも挙げてる!!! 問題へのリンク 問題概要 黒板に 個の整数 が書かれています。これらの数に対して、高橋君は以下の操作を繰り返します。 偶奇が等しい 2 つの数 を一組選び、それ…

AtCoder AGC 031 C - Differ by 1 Bit (黄色, 800 点)

証明はできるし、その証明に基づいた構成を数学的に与えることまではできるけど、それを実装に落とすのがすごく大変な問題。。。 問題へのリンク 問題概要 整数 が与えられます。 の順列 であって、 次の条件をすべて満たすものが存在するかどうか判定してく…

AtCoder ABC 048 D - An Ordinary Game (ARC 064 D) (青色, 500 点)

気づき系。。。 こういうのを一瞬で思いつける人になりたい。 問題へのリンク 問題概要 長さ の文字列 が与えられる。先手と後手とで交互に 文字列中の文字を一文字選んで消していく、ただし 両端は消せない その文字を消すことで「同じ文字が隣り合っている…

AtCoder AGC 027 E - ABBreviate (銀色, 1300 点)

2 日目:AGC 027 E - ABBreviate (1300 点)https://t.co/mvWcvtxfRz3 で割った余りについて不変量であることは既出。重複を除くために「文字列の部分文字列の数え上げ」的な考え方をするのも恐らく典型。自力で詰め切るのはまだ辛いけど「赤くならないうちは…

AtCoder ARC 102 F - Revenge of BBuBBBlesort! (銅色, 1200 点)

メッチャ楽しい問題!!! 問題へのリンク 問題概要 (ARC 102 F) 1 〜 N の順列が与えられる。 連続する三要素が単調減少のとき、それをひっくり返す という操作を好きなだけ行って、恒等順列にできるかどうか判定せよ。 制約 1 <= N <= 3 × 105 解法 (全然…

AtCoder AGC 013 C - Ants on a Circle (橙色, 700 点)

蟻さんぐるぐるなのん 問題へのリンク 問題概要 (AGC 013 C) 長さ の円周上を 匹の蟻が動く。どの蟻も 1 秒間に 1 だけ動く。互いに反対方向に動いている 2 匹の蟻がぶつかったら、互いに向きを反転させて動く。 匹の蟻は最初 の地点にいた。どの蟻が最初に…

2018 codeFlyer 本選 F - 配信パズル (800 点)

本番中なんとか解けたけど、すごくグチャグチャしたん。 問題へのリンク 問題概要 すぬけ君は、 日間にわたって、毎日次のようなパズルを解こうとしている。 すぬけ君の持っている端末に、縦 行、横 列からなる格子状の盤面が毎日配信されてくる。それぞれの…