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

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

ABC-G

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

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

AtCoder ABC 374 G - Only One Product Name (4D, 橙色, 600 点)

最初、頂点にアルファベット、辺に文字列を乗せたグラフを考えていたが、うまく解けなかった。 頂点に文字列を乗せて、しりとりが成立する箇所に辺を張ったグラフを考えるとうまくいった。 問題へのリンク 問題概要 英大文字 2 文字からなる 個の文字列 が与…

AtCoder ABC 373 G - No Cross Matching (3D, 黄色, 600 点)

すごく面白かった! 問題へのリンク 問題概要 二次元平面上に点 と という 個の点がある。同一直線上に 3 点が乗ることはない。 の順列 であって、次の条件を満たすものが存在するかどうかを判定し、存在するならば 1 つ示せ。 【条件】 に対して、2 点 , を…

AtCoder ABC 369 G - As far as possible (3D, 黄色, 600 点)

Euler Tour して、遅延評価セグ木(区間加算 + 区間 min)に乗せて......という解法を考えていたところに、あまりにもシンプルな想定解法を目にして、感動した! 問題へのリンク 問題概要 頂点数 の重み付き木が与えられる。 に対して、次の問に答えよ。 個…

AtCoder ABC 361 G - Go Territory (4D, ?色, 600 点)

方針を決めるのが大変な問題。 問題へのリンク 問題概要 二次元平面上の 個の格子点に碁石が置かれている。 このとき、碁石によって囲われている格子点の個数を求めよ。より正確には、「その空き格子点から上下左右の空き格子点への移動を繰り返して点 (-1, …

AtCoder ABC 359 G - Sum of Tree Distance (3D, 黄色, 600 点)

いろんな解法あり。 問題へのリンク 問題概要 頂点数 の無向木が与えられる。各頂点 には色 が塗られている。 このグラフにおいて、 であるような頂点組 () についての、2 点 間の距離の総和を求めよ。 制約 考えたこと マージテクで考えた。例によって頂点 …

AtCoder ABC 356 G - Freestyle (5D, 赤色, 575 点)

この見た目で「幾何」になるの、面白い! 問題へのリンク 問題概要 高橋君は 種類の泳ぎ方ができる。 種類目の泳ぎ方では、1 秒間に体力を だけ消費して、 メートル進むことができる。このとき、次の 回のクエリに答えよ。 【クエリ】 正の実数 が与えられる…

AtCoder ABC 354 G - Select Strings (4D, 橙色, 625 点)

Dilworth の定理から、DAG の最小パス被覆!! かつて流行った高度典型。 問題へのリンク 問題概要 個の文字列 が与えられる。各文字列には重み がついている。 これらの文字列から「どの 2 つの文字列も互いに他を部分文字列として含まない」という条件を満…

AtCoder ABC 353 G - Merchant Takahashi (2D, 青色, 550 点)

の計算量までなら比較的すぐできる! 問題へのリンク 問題概要 街 があって、街 間の行き来には だけの通行料がかかる。 回の市場がそれぞれ街 で行われ、 円えられる。 最初、無限の所持金を持っている。いくつかの市場に参加する (全く参加しなくてもよい)…

AtCoder ABC 352 G - Socks 3 (3D, 橙色, 600 点)

「回数の期待値」は、(k 回以上の確率) の総和に一致する!! あとは有名な「 個の一次関数の積は二分木のような計算順序で の計算量で求められるという話! 問題へのリンク 問題概要 色が であるような靴下が 枚ずつある。いずれも 2 種類以上ある。 これら…

AtCoder ABC 350 G - Mediator (3D, 黄色, 600 点)

本当に色んな解法がある問題っぽい!! 問題へのリンク 問題概要 頂点 の 頂点からなる無向グラフがあり、最初は辺がない。以下の 2 種類のオンラインクエリに答えよ。 クエリタイプ 1:頂点 間に辺を結ぶ クエリタイプ 2:頂点 の双方に隣接する頂点がある…

AtCoder ABC 338 G - evall (4D, 橙色, 600 点)

人目見て「頑張れば解けそう」と思えたので、コンテスト中になんとか頑張って通した! 問題へのリンク 問題概要 "1+2*34" のような文字列が与えられる。 この文字列の連続する部分文字列をすべて考えて 数式として成立しているなら、その数式を計算した値 数…

AtCoder ABC 335 G - Discrete Logarithm Problems (橙色, 600 点)

この問題を思い出した! 問題へのリンク 問題概要 素数 と、 個の 1 以上 以下の整数 が与えられる。 を満たす整数 が存在するような の組の個数を数え上げよ。 制約 考えたこと 一瞬、原始根を考えたくなったが、原始根ではなく「位数」を考えた方が計算量…

AtCoder ABC 225 G - X (4D, 橙色, 600 点)

2 変数劣モジュラ関数の和の最小化! 俗にいう燃やす埋める 問題へのリンク 問題概要 のグリッドがあって、各マス には値 が記されている。 いくつかのマスに「x」を描いていく。「x」は書かれるマスの左上の角と右下の角を結ぶ線分、および右上の角と左下の…

AtCoder ABC 326 G - Unlock Achievement (4D, 橙色, 625 点)

2 変数劣モジュラ関数の和の最小化を最小カットにするやつ! 問題へのリンク 問題概要 種類のスキルがある。それぞれ初期状態のスキルレベルは 1 であるが、最大で 5 まで上げられる。スキル のスキルレベルを 1 上げるのに必要なコストは 円である。 種類の…

AtCoder ABC 325 G - offence (黄色, 575 点)

o......f...(.....)... のようなパターンで、(.....) の中身が消せるような場合を最初見落とした。 問題へのリンク 問題概要 長さ の文字列 に対して、次の操作を好きな回数だけ行える。操作後の文字列の長さとして考えられる最小値を求めよ。 が連続する部…

AtCoder ABC 324 G - Generate Arrays (橙色, 600 点)

Wavelet Matrix の練習に 問題へのリンク 問題概要 初期状態が の順列である数列 が与えられる。 次の 2 種類のクエリに答えよ。なお、 番目 () のクエリをこなした後には、数列は 個に分割された状態となる。 クエリタイプ 1:群数列の 番目について、先頭…

AtCoder ABC 322 G - Two Kinds of Base (赤色, 600 点)

コンテスト後に解いた。なんとか詰め切った。 問題へのリンク 問題概要 非負整数 と整数 に対して、関数 を次のように定義する。 正整数 が与えられて、次の条件を満たす非負整数列 と正の整数 の組の個数を 998244353 で割った余りを求めよ。 () 制約 考え…

AtCoder ABC 321 G - Electric Circuit (橙色, 600 点)

除原理! 学びの多い問題だった。Subset Convolution の方はちょっと頑張ってこの後復習する。 問題へのリンク 問題概要 頂点番号が であるグラフ がある。最初、辺は 1 本もない。 以上 以下の値からなるサイズ の 2 つの数列 と がある。 今、これら 2 つ…

AtCoder ABC 320 G - Slot Strategy 2 (Hard) (4D, 橙色, 600 点)

広く捉えれば「各スロットに対して止める秒数を割り当てる」方法を考える割当問題だと言えそう。 問題へのリンク 問題概要 のグリッド が与えられる。各マスには 0 から 9 までの数字が描かれている。 今、次の条件を満たす 0 以上の整数値 を考えたとき、 …

AtCoder ABC 215 G - Colorful Candies 2 (黄色, 600 点)

最初 DP で迷走して、期待値の線形性を使って まで来れた。でも、Polynomial Taylor Shift なる解法もあるらしい! 問題へのリンク 問題概要 個のキャンディがあって、各キャンディの色は正の整数 で表されている。 各 に対して、 個のキャンディから 個のキ…

AtCoder ABC 318 G - Typical Path Problem (黄色, 575 点)

点素パスのパッキング系の問題、出ないな〜〜と思っていたら出た! 問題へのリンク 問題概要 頂点数 、辺数 の単純無向グラフが与えられる。3 頂点 が指定される。 2 頂点 を端点とする単純パスであって、頂点 を通るものが存在するかどうか判定せよ。 制約 …

AtCoder ABC 317 G - Rearranging (橙色, 600 点)

面白かった 問題へのリンク 問題概要 のグリッドがある。各マスには数値が書かれている。 個の数値を集めると、 が 個ずつある。 今、各行について、その 個の数値を自由に並び替えていく。 その結果として、すべての列が の順列であるようにすることが可能…

AtCoder ABC 313 G - Redistribution of Piles (橙色, 625 点)

floor sum!!! コンテスト中に思いつけてよかった! 問題へのリンク 問題概要 皿 があって、皿 には 個の石が乗っている。また、空の袋がある。 あなたは以下の 2 種類の操作を好きな順番で 0 回以上何度でも行うことができる。 石が 1 個以上載っている皿…

AtCoder ABC 311 G - One More Grid Task (3D, 黄色, 575 点)

黒マスを避けながら、長方形領域の値の総和を最大化する問題として解いた! 問題へのリンク 問題概要 のグリッドがあって、各マス には正の整数 が書かれている。 グリッドに含まれる長方形領域のうち、「長方形領域に含まれる値の総和」と「長方形領域に含…

AtCoder ABC 267 G - Increasing K Time (橙色, 600 点)

順列を数え上げる系の問題、うまく「個数」を持った天才的な DP をするイメージ 問題へのリンク 問題概要 整数列 が与えられる。 この数列の 通りの順列のうち、 であるような がちょうど 個であるようなものの個数を 998244353 で割ったあまりを求めよ。 制…

AtCoder ABC 266 G - Yet Another RGB Sequence (黄色, 600 点)

すごく楽しかった。解析的に式で求められるのね。 問題へのリンク 問題概要 個の文字 R、 個の文字 G、 個の文字 B を並べてできる文字列のうち、部分文字列として含まれる RG がちょうど 個であるようなものの個数を 998244353 で割ったあまりを求めよ。 制…

AtCoder ABC 256 G - Black and White Stones (黄色, 600 点)

opt さんの得意系って感じだった! 問題へのリンク 問題概要 一辺の長さが整数 の正 角形がある。 頂点から始めて、周上に距離 1 ごとに黒い石か白い石を置いていく。 石の置き方のうち、各辺上にある白い石の個数が等しくなるようなものの個数を 998244353 …

AtCoder ABC 259 G - Grid Card Game (橙色, 600 点)

opt さんの「そのままだと優モジュラ最適化なので、青木君の選ぶ・選ばないをひっくり返せば劣モジュラ最適化。よって最小カットでできる」が賢かった。 競プロで言うところの「燃やす埋める」 問題へのリンク 問題概要 のグリッドがあって、各マス には整数…

AtCoder ABC 300 G - P-smooth number (黄色, 600 点)

面白かった 問題へのリンク 問題概要 以下の素数のみを素因数に持つ正整数を -smooth number と呼ぶ。 整数 および 、100 以下の素数 が与えられるので、 以下の -smooth number の個数を求めよ。 制約 考えたこと コンテスト中には、愚直 DFS を頑張って通…