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

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

制約条件:総和=K

AtCoder ARC 167 A - Toasts for Breakfast Party (灰色, 300 点)

面白かった! 問題へのリンク 問題概要 個の正の整数 を 個のグループに分ける。ただし、どのグループの要素数も 1 個以上 2 個以下でなければならない。 最適なグループ分けをしたときの、各グループの要素の総和の二乗の総和の最小値を求めよ。 制約 考え…

JOIG 2023 D - コイン集め 2 (難易度 6)

データを上手に持って、差分更新する系の問題 問題へのリンク 問題概要 のグリッドがあって、各マスは文字 '#' か '.' のいずれかが書かれている。先手は '#' の個数が得点となり、後手は '.' の個数が得点となる。双方得点を最大化したい。 先手は行を 1 つ…

AtCoder ABC 321 F - #(subset sum = K) with Add and Erase (青色, 525 点)

「戻す DP」または「FPS」で! 問題へのリンク 問題概要 最初、箱は空である。以下の操作を 回行う。各操作後において、以下の値を答えよ。 箱に入っているボールをいくつか選ぶ方法であって、ボールに書かれた数値の総和が となる方法の個数を 998244353 で…

競プロキャンプ2023関西 L - (sum)mer

FPS + 負の二項係数 問題へのリンク 問題概要 長さが で総和が であるような、正の整数のみからなる数列 すべてについての の総和を 998244353 で割ったあまりを求めよ ( ケース)。 制約 解法 (1):FPS 求めたいものは である。これはちゃんと計算すると、 …

AtCoder ABC 303 Ex - Constrained Tree Degree (橙色, 600 点)

プリューファーコード! それを知っていれば FPS 解法は自然。 問題へのリンク 問題概要 以上 以下の整数集合の部分集合 {} が与えられる。 頂点に と番号のついた頂点数 の木であって、各頂点の次数が集合 に含まれているようなものの個数を 998244353 で割…

AtCoder ARC 160 D - Mahjong (橙色, 700 点)

FPS による考察はやっぱり強力ですね! 問題へのリンク 問題概要 長さ かつ総和 である非負整数列 のうち、以下の条件を満たすものの個数を 998244353 で割ったあまりを求めよ。 「以下の操作のうちどちらかを選んで行うことを繰り返して、 の全ての要素を 0…

EDPC (Educational DP Contest) M - Candies

DP 高速化に累積和を使う問題! 問題へのリンク 問題概要 人の子ども に、 個の飴を分けることにした。 ただし、子ども に分ける飴は、 個以上 個以下のする必要がある。 各子どもへの飴の分け方の総数を、1000000007 で割ったあまりを求めよ。 制約 解法:…

AtCoder ABC 213 H - Stroll (赤色, 600 点)

オンライン分割統治 FFT 面白いね!! 公式解説がとても丁寧なので、備忘録程度に 問題へのリンク 問題概要 頂点数 のが与えられます。 組の頂点対に対して、次のように無向辺を張っていきます。 組めの頂点対に対しては 長さ 1 の辺が 本 長さ 2 の辺が 本 …

JOI 予選 2010 E - 通勤経路 (AOJ 0547, 難易度 6)

JOI 難易度 6 の中では難しい方だと思った! 問題へのリンク editorial 問題概要 のグリッドの左下マス から右上マス へと至る最短経路 (上または右にのみ移動可能) のうち、以下の条件を満たすものの個数を 100000 で割ったあまりを求めよ。 曲がってから、…

AtCoder ARC 110 D - Binomial Coefficient is Fun (黄色, 600 点)

色んな解法がありそう。 問題へのリンク 問題概要 個の正の整数 が与えられる。 を満たすすべての非負整数列 に対する の総和を 1000000007 で割ったあまりを求めよ。 制約 解法 (1):経路数への帰着 (僕の解法) 二項係数を扱う方法論として、経路数へと帰着…

AtCoder AGC 049 D - Convex Sequence (橙色, 1000 点)

最初は二次元 FFT が必要な気分になっていて右往左往していた。個数制限なしナップサック問題になるのは面白かった! 問題へのリンク 問題概要 正の整数 が与えられる。長さ の非負整数列 であって という条件を満たすものの個数を、1000000007 で割ったあま…

AtCoder AGC 036 C - GP 2 (黄色, 900 点)

こういう数え上げ、大好きすぎる!!! 問題へのリンク 問題概要 長さ の数列 がある。初期状態ではすべての値が 0 となっている。この数列に以下の操作をちょうど 回行って得られる数列が何通りあるか、998244353 で割ったあまりを求めよ。 となる を選んで…

Codeforces Round #681 (Div. 1) D. Sum (R2800)

から落とせる気がまったくしなかった... 問題へのリンク 問題概要 個の広義単調増加数列 が与えられる。 それぞれの数列から、先頭から 個ずつとってきた値の総和の最大値を求めよ。ただし でなければならないものとする。 制約 考えたこと 個数に関する con…

AtCoder ARC 107 D - Number of Multisets (黄色, 600 点)

いろんな DP が考えられそう! 問題へのリンク editorial 問題概要 正整数 が与えらる。以下の条件を全て満たす有理数の多重集合は何種類存在するか、998244353 で割ったあまりを求めよ。 多重集合の要素数は 多重集合の要素の総和は 多重集合の要素は全て (…

KUPC 2020 M - Many Parentheses

形式的冪級数の pow で通せた! 問題へのリンク editorial 問題概要 個の箱それぞれに正しい括弧列を入れる。ただし、次の2つの条件をともに満たすように入れる必要がある。 個の箱に含まれる '(' の個数の合計が 長さが である括弧列はどの箱にも入れてはな…

CPSCO2019 Session3 G - Grand Election (800 点設定)

資源配分問題とも言われるタイプの問題。均等配分からの摂動で良さそう (嘘解法) だと騙すことを狙った! 問題へのリンク 問題概要 個の正の整数 (総和を とする) が与えられたとき、 が最小値となる を満たすような非負整数の組 を求めよ。複数通り考えられ…

AtCoder ABC 178 D - Redistribution (緑色, 400 点)

総和が一定値になるような数列の数え上げ、最近よく見る! 問題へのリンク 問題概要 整数 が与えられる。 すべての項が 3 以上の整数で、その総和が であるような数列の個数を 1000000007 で割ったあまりを求めよ。 制約 解法 (1):素直に DP まずは素直な D…

yukicoder No.3046 yukicoderの過去問

FPS の inv 関数が使える問題 問題へのリンク 問題概要 階段で一度に登れる段差が であるとする。ちょうど 段を登る方法が何通りあるか、1000000007 で割ったあまりを求めよ。 制約 考えたこと として、 の 次の係数を求める問題となる。 の計算量でできる。…

AtCoder ARC 028 D - 注文の多い高橋商店 (試験管赤色)

戻す DP を履修して行く!!! 問題へのリンク 問題概要 個の正の整数 と正の整数 が与えられる。以下の 個のクエリに答えよ。 整数 が与えられる 以下の条件を満たす 0 以上の整数の組 () の個数を 1000000007 で割ったあまりを求めよ 制約 考えたこと この…

AOJ 3169 Pyramid Graph (HUPC 2020 day1-F)

ゴリ (prd さん) と一緒に出て楽しかったコンテスト。 そして「グラフのサイクル・パスの列挙」に関する問題は北大セットの定番というイメージになってきた。 問題へのリンク 問題概要 下図のような 角錐が与えられる (底面が 角形で "頂点" の頂点番号を 0 …

第一回日本最強プログラマー学生選手権-予選- F - Candy Retribution (銅色, 1000 点)

てんぷらたんのこれを思い出した!!! yukicoder.me 問題へのリンク 問題概要 要素からなる非負整数 であって 要素を大きい順に並べたとき、 番目と 番目とが等しい という条件を満たすものの個数を で割ったあまりを求めよ。 制約 考えたこと まず、 以上 …

AtCoder ABC 132 D - Blue and Red Balls (緑色, 400 点)

二項係数が吹き荒れる!!!!!!!!! そして、重複組み合わせに関する理解がすごく問われる問題!!!!!!! 問題へのリンク 問題概要 個のボールがあって、そのうちの 個が青で、残りの 個が赤である。同じ色のボールは互いに区別できない。 各 に対…

Tenka1 2019 D - Three Colors (黄色, 600 点)

お 見た目とても面白そう 問題へのリンク 問題概要 要素からなる数列 があたえられる。各要素を「赤」「緑」「青」の三色のいずれかに塗る方法のうち、各色の合計値を として三辺の長さが となるような三角形が存在するようなものを数え上げよ。998244353 で…

yukicoder No.802 だいたい等差数列

面白い!!!!!!!!! 問題へのリンク 問題概要 長さ の整数列 であって、 を満たすものの個数を 1000000007 で割ったあまりを求めよ。 制約 まずは変数変換 まずは数列 の差分に注目してみることにする。 とする ( とする)。そうすると、条件は () とい…

AtCoder ARC 004 D - 表現の自由 (試験管黄色)

これがインフレ!?ABC 110 D - Factorization に瓜二つ 問題へのリンク 問題概要 整数 を 個の整数の積として表す方法が何通りあるかを、1000000007 で割ったあまりを求めよ。 制約 考えたこと ほとんど、ABC 110 D - Factorization と一緒。 だが、マイナ…

AtCoder ABC 110 D - Factorization (青色, 400 点)

素因数分解 & 重複組合せ を勉強できる、すごく教育的問題だった!!! 問題へのリンク 問題概要 整数 が与えられる。 を満たす整数の組 () が何通りあるか、1000000007 で割った余りで求めよ。 制約 解法 素因数分解っぽいテーマの問題。こういうのは「まず…

AtCoder ARC 102 E - Stop. Otherwise... (橙色, 700 点)

いろんな解法がありそうなんな 問題へのリンク 問題概要 整数 が与えられる。各 に対して、 どの に対しても を満たす整数組 の個数を で割った余りを求めよ ( 面サイコロを 個振るという設定)。 制約 解法 1: 漸化式を立ててそれを展開 (本番で通した解法) …

AtCoder ARC 067 E - Grouping (黄色, 600 点)

slack 勉強会で 600 点の DP として話題になってやってみたん。 DP 自体は素朴だけど、計算量解析含めると 700 点でもいい気はする。 Grouping 問題へのリンク 問題概要 (ARC 067 E) 人をグループ分けしたい。 人は互いに区別される。 どのグループの人数も …